Module: wine Branch: master Commit: 91f89b4f96674024b3436423ddb188e838d1ca54 URL: http://source.winehq.org/git/wine.git/?a=commit;h=91f89b4f96674024b3436423dd...
Author: Jean-Christophe Cardot wine@cardot.net Date: Fri Apr 15 12:08:03 2016 +0200
winhlp32: Fix some images not shown in certain 16-bit help files.
Subfiles with bitmap images are usually prefixed with '|', but sometimes not.
Signed-off-by: Jean-Christophe Cardot wine@cardot.net Signed-off-by: Alexandre Julliard julliard@winehq.org
---
programs/winhlp32/hlpfile.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/programs/winhlp32/hlpfile.c b/programs/winhlp32/hlpfile.c index 10484a9..2748e5c 100644 --- a/programs/winhlp32/hlpfile.c +++ b/programs/winhlp32/hlpfile.c @@ -507,6 +507,18 @@ static BOOL HLPFILE_FindSubFile(HLPFILE* hlpfile, LPCSTR name, BYTE **subbuf, BY WINE_TRACE("looking for file '%s'\n", name); ptr = HLPFILE_BPTreeSearch(hlpfile->file_buffer + GET_UINT(hlpfile->file_buffer, 4), name, comp_FindSubFile); + if (!ptr) + { /* Subfiles with bitmap images are usually prefixed with '|', but sometimes not. + Unfortunately, there is no consensus among different pieces of unofficial + documentation. So remove leading '|' and try again. */ + CHAR c = *name++; + if (c == '|') + { + WINE_TRACE("not found. try '%s'\n", name); + ptr = HLPFILE_BPTreeSearch(hlpfile->file_buffer + GET_UINT(hlpfile->file_buffer, 4), + name, comp_FindSubFile); + } + } if (!ptr) return FALSE; *subbuf = hlpfile->file_buffer + GET_UINT(ptr, strlen(name)+1); if (*subbuf >= hlpfile->file_buffer + hlpfile->file_buffer_size)