Potential buffer overflow in SFXSetup/SfxSetup.cpp
The fix is correct. Thanks for report!
I don't remember why it's so. Does FileGroupDescriptor format support alternate data streams and creation timestamps in files? But it's another thing. Your original question was about dwOKEffects.
some long comments from source code. I hope these comments are related to that issue? CTime - file creation timestamp. There are two operations in Windows with Drag and Drop: COPY_OPERATION : icon with Plus sign : CTime will be set as current_time. MOVE_OPERATION : icon without Plus sign : CTime will be preserved. Note: if we call DoDragDrop() with (effectsOK = DROPEFFECT_MOVE), then it will use MOVE_OPERATION and CTime will be preserved. But MoveFile() function doesn't preserve CTime, if different...
long comments from source code; CTime - file creation timestamp. There are two operations in Windows with Drag and Drop: COPY_OPERATION : icon with Plus sign : CTime will be set as current_time. MOVE_OPERATION : icon without Plus sign : CTime will be preserved. Note: if we call DoDragDrop() with (effectsOK = DROPEFFECT_MOVE), then it will use MOVE_OPERATION and CTime will be preserved. But MoveFile() function doesn't preserve CTime, if different volumes are used. Why it's so? Does DoDragDrop() use...
CTime - file creation timestamp. There are two operations in Windows with Drag and Drop: COPY_OPERATION : icon with Plus sign : CTime will be set as current_time. MOVE_OPERATION : icon without Plus sign : CTime will be preserved. Note: if we call DoDragDrop() with (effectsOK = DROPEFFECT_MOVE), then it will use MOVE_OPERATION and CTime will be preserved. But MoveFile() function doesn't preserve CTime, if different volumes are used. Why it's so? Does DoDragDrop() use some another function (not MoveFile())?...
I don't remember details. Each selected decision in that code had some reasons. You can look source code, maybe there are some comments there.
Deleting from an archive from "Move" is a dangerous operation where data loss is possible. And it can be expensive operation because recompression can be required in some cases. So we try to use Copy instead of Move.