allowed-apns: Fix crash

When a modem is being removed, all of the modem's atom watches have
already been cleaned up.  Trying to remove it again results in a crash.

Fix by registering a destroy callback which will be notified when the
atomwatch has been removed.
This commit is contained in:
Denis Kenzior 2016-06-06 11:00:25 -05:00
parent ff7837b054
commit f420aea458
1 changed files with 9 additions and 1 deletions

View File

@ -72,6 +72,13 @@ static void context_destroy(gpointer data)
g_free(ctx);
}
static void atomwatch_destroy(gpointer data)
{
struct allowed_apns_ctx *ctx = data;
ctx->atomwatch_id = 0;
}
static void sim_acl_read_cb(int ok, int total_length, int record,
const unsigned char *data, int record_length,
void *userdata)
@ -246,7 +253,8 @@ static void modem_watch(struct ofono_modem *modem,
ctx->atomwatch_id = __ofono_modem_add_atom_watch(ctx->modem,
OFONO_ATOM_TYPE_SIM,
sim_watch, ctx, NULL);
sim_watch, ctx,
atomwatch_destroy);
}
static void call_modemwatch(struct ofono_modem *modem, void *userdata)