• Jinoh Kang's avatar
    gdiplus: Replace GpImage's busy flag with SRWLOCK. · 72c0c88f
    Jinoh Kang authored
    Today, the image_unlock() helper function has a data race due to
    non-atomic write to GpImage's 'busy' flag which is accessible by other
    threads.  Also, it lacks a release fence, which means that other threads
    can observe the unlocked (busy = 0) state too early when the current
    thread unlocks the image; specifically, the write to the 'busy' field of
    the GpImage can be reordered before the last read/write to any other
    fields of the same GpImage.
    
    Fix this by replacing the 'busy' field of GpImage with SRWLOCK.
    72c0c88f
image.c 181 KB