static void sp_shm_area_dec (ShmPipe * self, ShmArea * area) { assert (area->use_count > 0); area->use_count--; if (area->use_count == 0) { ShmArea *item = NULL; ShmArea *prev_item = NULL; for (item = self->shm_area; item; item = item->next) { if (item == area) { if (prev_item) prev_item->next = item->next; else self->shm_area = item->next; break; } prev_item = item; } assert (item); sp_close_shm (area); } }
static void sp_shm_area_dec (ShmPipe * self, ShmArea * area) { assert (area->use_count > 0); area->use_count--; if (area->use_count == 0) { sp_close_shm (self, area); } }