> w_byte is a macro that either calls C's putc, or w_more. > > putc takes an int, and all calls to w_byte make sure they're > passing the right thing. > > however, w_more is defined to take a char, which results in > warnings from MSVC5. > > quick fix: change w_more to take an integer too: > ... And I see you checked that in. Good! I later replaced part of it, via a new mini-subsystem that may tick somebody off, so I'll explain that here so people can yell at me now: 1. asserts are a fundamental tool of good C practice, but are very rarely used in Python source. To encourage their use, I added an include of <assert.h> to Python.h, so that assert is always available. 2. Added a new Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) macro to pyport.h, which is also always available. This casts VALUE from type WIDE to type NARROW, but assert-fails if info is lost due to the cast and Py_DEBUG is #define'd (when we're not in Py_DEBUG mode, it just expands to (NARROW)(VALUE)). Note: this kind of thing is much easier to do in C++, because of inline functions and being able to templatize those on the types involved (i.e., the compiler can figure out which specific checker to expand at compile-time, rather than making you redundantly-- and hence possibly incorrectly --name the types "by hand" again). 3. It's nice that eyeballing every call to marshal's w_byte allows one to infer that the derived calls to w_more are safe, but it's much better to let the compiler check that. So I replaced the raw cast with an invocation of Py_SAFE_DOWNCAST. Doesn't cost anything except in Py_DEBUG mode.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4