- CIRCLEQ_FOREACH(ms, &me->orphanScnList, elemChildScn) {
- CIRCLEQ_REMOVE(&me->orphanScnList, ms, elemChildScn);
- elfu_mScnDestroy(ms);
+ if (!CIRCLEQ_EMPTY(&me->orphanScnList)) {
+ ElfuScn *nextms;
+
+ nextms = CIRCLEQ_FIRST(&me->orphanScnList);
+ while ((void*)nextms != (void*)&me->orphanScnList) {
+ ElfuScn *curms = nextms;
+ nextms = CIRCLEQ_NEXT(curms, elemChildScn);
+ CIRCLEQ_REMOVE(&me->orphanScnList, curms, elemChildScn);
+ elfu_mScnDestroy(curms);
+ }