system-controller: don't dereference screen_resource_t after freeing it.
authorKrisztian Litkey <kli@iki.fi>
Sat, 25 Oct 2014 08:35:31 +0000 (11:35 +0300)
committerKrisztian Litkey <krisztian.litkey@intel.com>
Thu, 8 Jan 2015 16:37:18 +0000 (18:37 +0200)
Change-Id: Iaf35be947867d205449861c659d5915f8569447c

src/plugins/system-controller/resource-manager/screen.c

index 20414e6..110e1b2 100644 (file)
@@ -1125,6 +1125,7 @@ static void screen_resource_destroy(mrp_resmgr_screen_t *screen,
     const char *appid;
     int32_t layerid;
     int32_t surfaceid;
+    uint32_t zoneid;
     const char *areaname;
 
     MRP_ASSERT(res && screen && screen->resources, "invalid argument");
@@ -1145,10 +1146,12 @@ static void screen_resource_destroy(mrp_resmgr_screen_t *screen,
         if (surfaceid)
             mrp_htbl_remove(screen->resources, NULL + surfaceid, false);
 
+        zoneid = sr->zoneid;
+
         mrp_list_delete(&sr->link);
         mrp_free(sr);
 
-        mrp_resmgr_notifier_flush_screen_events(screen->resmgr, sr->zoneid);
+        mrp_resmgr_notifier_flush_screen_events(screen->resmgr, zoneid);
     }
 }