\r
xbt_dynar_foreach(units->items, i, unit)\r
{\r
+ xbt_os_sem_acquire(jobs_sem);\r
unit_run(unit, mutex);\r
}\r
\r
{\r
if(!(unit->successeded) && !(unit->interrupted))\r
unit_interrupt(unit);\r
+ else\r
+ {\r
+ if(!unit->released && unit->sem)\r
+ {\r
+ unit->released = 1;\r
+ xbt_os_sem_release(unit->sem);\r
+ }\r
+ }\r
+ \r
}\r
\r
return 0;\r
{\r
if(!(*unitsptr))\r
return EINVAL;\r
-\r
- xbt_dynar_free(&((*((units_t*)unitsptr))->items));\r
+ \r
+ if((*((units_t*)unitsptr))->items)\r
+ xbt_dynar_free(&((*((units_t*)unitsptr))->items));\r
\r
free(*unitsptr);\r
*unitsptr = NULL;\r