Ignore:
Timestamp:
Sep 10, 2016, 12:15:57 AM (9 years ago)
Author:
bird
Message:

More stdout console buffering tricks on windows.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kWorker/kWorker.c

    r2905 r2906  
    26382638static _onexit_t __cdecl kwSandbox_msvcrt__onexit(_onexit_t pfnFunc)
    26392639{
    2640     PKWEXITCALLACK pCallback;
    2641     KW_LOG(("_onexit(%p)\n", pfnFunc));
    2642     kHlpAssert(GetCurrentThreadId() == g_Sandbox.idMainThread);
    2643 
    2644     pCallback = kHlpAlloc(sizeof(*pCallback));
    2645     if (pCallback)
    2646     {
    2647         pCallback->pfnCallback = pfnFunc;
    2648         pCallback->fAtExit     = K_FALSE;
    2649         pCallback->pNext       = g_Sandbox.pExitCallbackHead;
    2650         g_Sandbox.pExitCallbackHead = pCallback;
    2651         return pfnFunc;
    2652     }
    2653 
    2654     return NULL;
     2640    if (g_Sandbox.pTool->u.Sandboxed.enmHint == KWTOOLHINT_VISUAL_CPP_LINK)
     2641    {
     2642        PKWEXITCALLACK pCallback;
     2643        KW_LOG(("_onexit(%p)\n", pfnFunc));
     2644        kHlpAssert(GetCurrentThreadId() == g_Sandbox.idMainThread);
     2645
     2646        pCallback = kHlpAlloc(sizeof(*pCallback));
     2647        if (pCallback)
     2648        {
     2649            pCallback->pfnCallback = pfnFunc;
     2650            pCallback->fAtExit     = K_FALSE;
     2651            pCallback->pNext       = g_Sandbox.pExitCallbackHead;
     2652            g_Sandbox.pExitCallbackHead = pCallback;
     2653            return pfnFunc;
     2654        }
     2655        return NULL;
     2656    }
     2657    KW_LOG(("_onexit(%p) - IGNORED\n", pfnFunc));
     2658    return pfnFunc;
    26552659}
    26562660
     
    26592663static int __cdecl kwSandbox_msvcrt_atexit(int (__cdecl *pfnFunc)(void))
    26602664{
    2661     PKWEXITCALLACK pCallback;
    2662     KW_LOG(("_onexit(%p)\n", pfnFunc));
    2663     kHlpAssert(GetCurrentThreadId() == g_Sandbox.idMainThread);
    2664 
    2665     pCallback = kHlpAlloc(sizeof(*pCallback));
    2666     if (pCallback)
    2667     {
    2668         pCallback->pfnCallback = (_onexit_t)pfnFunc;
    2669         pCallback->fAtExit     = K_TRUE;
    2670         pCallback->pNext       = g_Sandbox.pExitCallbackHead;
    2671         g_Sandbox.pExitCallbackHead = pCallback;
    2672         return 0;
    2673     }
    2674 
    2675     return -1;
     2665    if (g_Sandbox.pTool->u.Sandboxed.enmHint == KWTOOLHINT_VISUAL_CPP_LINK)
     2666    {
     2667        PKWEXITCALLACK pCallback;
     2668        kHlpAssert(GetCurrentThreadId() == g_Sandbox.idMainThread);
     2669        KW_LOG(("atexit(%p)\n", pfnFunc));
     2670
     2671        pCallback = kHlpAlloc(sizeof(*pCallback));
     2672        if (pCallback)
     2673        {
     2674            pCallback->pfnCallback = (_onexit_t)pfnFunc;
     2675            pCallback->fAtExit     = K_TRUE;
     2676            pCallback->pNext       = g_Sandbox.pExitCallbackHead;
     2677            g_Sandbox.pExitCallbackHead = pCallback;
     2678            return 0;
     2679        }
     2680        return -1;
     2681    }
     2682    KW_LOG(("atexit(%p) - IGNORED!\n", pfnFunc));
     2683    return 0;
    26762684}
    26772685
Note: See TracChangeset for help on using the changeset viewer.