Fixed NULL-pointer bug when unloading of GSM interfaces origin/1.11
authorAndreas Eversberg <jolly@eversberg.eu>
Sat, 7 Jan 2012 08:34:51 +0000 (09:34 +0100)
committerAndreas Eversberg <jolly@eversberg.eu>
Sat, 7 Jan 2012 08:34:51 +0000 (09:34 +0100)
interface.c

index 57d7fe8..ee753a9 100644 (file)
@@ -1489,6 +1489,17 @@ void relink_interfaces(void)
        /* unlink all mISDNports */
        mISDNport = mISDNport_first;
        while(mISDNport) {
+               if (mISDNport->ifport) {
+                       ifport = mISDNport->ifport;
+#ifdef WITH_GSM_MS
+                       if (ifport->gsm_ms)
+                               gsm_ms_delete(ifport->gsm_ms_name);
+#endif
+#ifdef WITH_GSM_BS
+                       if (ifport->gsm_bs)
+                               gsm_bs_exit(0);
+#endif
+               }
                mISDNport->ifport = NULL;
                mISDNport = mISDNport->next;
        }
@@ -1521,15 +1532,7 @@ void relink_interfaces(void)
        while(mISDNport) {
                if (mISDNport->ifport == NULL) {
                        PDEBUG(DEBUG_ISDN, "Port %d is not used anymore and will be closed\n", mISDNport->portnum);
-                       /* remove all port objects and destroy port */
-#ifdef WITH_GSM_MS
-                       if (ifport->gsm_ms)
-                               gsm_ms_delete(ifport->gsm_ms_name);
-#endif
-#ifdef WITH_GSM_BS
-                       if (ifport->gsm_bs)
-                               gsm_bs_exit(0);
-#endif
+                       /* destroy port */
                        mISDNport_close(mISDNport);
                        goto closeagain;
                }