From: Andrzej Zaborowski Date: Fri, 7 May 2010 00:26:48 +0000 (+0200) Subject: Fix: Don't remove wrong atoms X-Git-Tag: 0.21~174 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=018ee10f92a48ac278b4219c1cf51876155fd5da;p=platform%2Fupstream%2Fofono.git Fix: Don't remove wrong atoms When the state goes from INSERTED to NOT PRESENT and we have not advanced past the SIM PIN entry, we remove the pre_sim atoms. Similarly, if we advanced past the SIM PIN stage and subsequently removed the SIM, the pre_sim atom list should not be tampered with. --- diff --git a/src/modem.c b/src/modem.c index 8319702..0d0cb2a 100644 --- a/src/modem.c +++ b/src/modem.c @@ -1132,13 +1132,16 @@ static void modem_sim_ready(void *user, enum ofono_sim_state new_state) switch (new_state) { case OFONO_SIM_STATE_NOT_PRESENT: - remove_all_atoms(&modem->atoms); + if (modem->pre_sim_atoms != NULL) + remove_all_atoms(&modem->atoms); break; case OFONO_SIM_STATE_INSERTED: break; case OFONO_SIM_STATE_READY: - modem->pre_sim_atoms = modem->atoms; - modem->atoms = NULL; + if (modem->pre_sim_atoms == NULL) { + modem->pre_sim_atoms = modem->atoms; + modem->atoms = NULL; + } if (modem->driver->post_sim) modem->driver->post_sim(modem);