void _optlink() { LNKINIT(); // command lines all read, ready to go... // start at head of OBJ_LIST and process OBJ_FILES PASS1_STUFF(); // reads objs and libs MIDDLE_STUFF(); // org segs and publics, etc PASS2_STUFF(); // fixup and relocate // NEED TO WAIT FOR ANY OUTPUT THREADS TO FINISH... // WAIT FOR MAP THREAD TO FINISH if (_HOST_THREADED) { if (!MAP_THREAD_HANDLE) goto L7; WaitForSingleObject(MAP_THREAD_HANDLE, -1); _close_handle(MAP_THREAD_HANDLE); MAP_THREAD_HANDLE = 0; } if (MAPFILE_GINDEX) { // FLUSH LAST BUFFER OF MAP FILE MAP_FLUSHED = 0xFF; _flush_trunc_close(MAP_DEVICE); } L7: ; _NO_CANCEL_FLAG = 0xFF; _abort(); }
void close() { if (_close_handle) _close_handle(_h); _h = nullptr; _close_handle = 0; }
~handle() { if (_close_handle) _close_handle(_h); }