Hello all.
Some traces +mdi and version of strlenW that prints result
before exit:
...
trace:mdi:MDI_UpdateFrameText AFTER lstrcpyW(lpBuffer): L"Adobe PageMaker 6.5"
trace:mdi:MDI_UpdateFrameText BEFORE strcatW(L"Adobe PageMaker 6.5", L" - [")
strlenW(): 19 <-- right
trace:mdi:MDI_UpdateFrameText AFTER strcatW: L"Adobe PageMaker 6.5 - ["
trace:mdi:MDI_UpdateFrameText BEFORE strcatW(L"Adobe PageMaker 6.5 - [", L"")
strlenW(): 19 <-- wrong
trace:mdi:MDI_UpdateFrameText AFTER strcatW: L"Adobe PageMaker 6.5"
trace:mdi:MDI_UpdateFrameText BEFORE strcatW(L"Adobe PageMaker 6.5", L"]")
strlenW(): 19 <-- right
trace:mdi:MDI_UpdateFrameText AFTER strcatW: L"Adobe PageMaker 6.5]"
...
and more:
...
trace:mdi:MDI_UpdateFrameText AFTER lstrcpyW(lpBuffer): L"Adobe PageMaker 6.5"
trace:mdi:MDI_UpdateFrameText BEFORE strcatW(L"Adobe PageMaker 6.5", L" - [")
strlenW(): 19 <-- right
trace:mdi:MDI_UpdateFrameText AFTER strcatW: L"Adobe PageMaker 6.5 - ["
trace:mdi:MDI_UpdateFrameText BEFORE strcatW(L"Adobe PageMaker 6.5 - [", L"Untitled-1")
strlenW(): 19 <-- wrong
trace:mdi:MDI_UpdateFrameText AFTER strcatW: L"Adobe PageMaker 6.5Untitled-1"
trace:mdi:MDI_UpdateFrameText BEFORE strcatW(L"Adobe PageMaker 6.5Untitled-1", L"]")
strlenW(): 29 <-- right
trace:mdi:MDI_UpdateFrameText AFTER strcatW: L"Adobe PageMaker 6.5Untitled-1]"
...
Some workarounds:
1. Without -O2 - all right.
2. Disabling assembly in strlenW - all right.
Ideas?
Dmitry.