__wine_dbg_output accumulates the output characters in a debug_info
structure, flushing it when it encounters '\n'. If debug_info plus the
new string exceed 1024 characters, append_output will print
> wine_dbg_output: debugstr buffer overflow
and then crash the process via abort().
wine_dbgstr_variant limits the length printed for any individual argument,
but a function with multiple parameters can still plausibly exceed 1024.
Fixed by formatting the TRACE for each argument on a separate line,
as similar places (like oleaut32/typelib.c:dump_DispParms) do.
The reason for the re-ordering in event types is due to querying the
IIDs, where the order matters (MouseEvent must be queried before UIEvent,
for example).
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Currently, these forward declarations make widl add IHTMLDocument2's `URL`
symbol before the other, lowercased, `url` symbols to the type library
(from IHTMLMetaElement, IDOMStorageEvent, etc). Since the typelib symbols
are case insensitive, `URL` ends up stored instead of `url`, which doesn't
match native.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
We have dups in global / file static variables definition:
- between compiland stream and global (DBI) stream
(we need to de-dup these)
- still adding variables only present global DBI stream
- keeping in mind, we need to keep:
+ two variables of different names at same address (aliasing)
+ variables of same name at different addresses
(MS linker generate those)
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Only load records that are listed in global hash file when handling
the global symbol stream.
Do the same thing for the public symbols.
When using MS linker in incremental mode:
- old variable definitions are kept in the (DBI) global symbol stream
along side the new definition
- but only the latest (valid) definition is referenced from the hash
table
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
mingw-w64 defines __forceinline (and therefore FORCEINLINE) as
"extern __inline__ __attribute__((__always_inline__,__gnu_inline__)). This means
that COM inline wrappers specify multiple storage classes and hence cannot be
compiled.
Wine defines FORCEINLINE simply as "inline" (and uses "static" everywhere), so
this is a non-issue for Wine. However, since Wine and mingw-w64 share the source
code of widl and of most IDL headers, this patch changes the definition for both
projects.
There's no reason to force inlining here, especially since the wrappers need to
be manually enabled, and we don't need to match PSDK semantics where these
wrappers don't even exist.
In practice, use "__inline__" instead of "inline" for GNU C targets, to preserve
compatibility with C89 in mingw-w64 headers.