Problem EMSGN was being used to print a format string using "%lu",
which is incorrect because EMSGN casts its argument to int64_t.
Solution Use EMGSU instead.
Problem
EMSGU macro was defined as the unsigned counterpart of EMSGN. This is,
invoking emsgu instead of emsgn and having a long_u argument instead of
a long.
But, surprisingly, emsgu was not defined anywhere, which didn't result
in an error because in fact EMSGU was not used (the only point in code
printing a %lu erroneously using EMSGN instead).
Solution
- Define emsgu.
- Adapt EMSGU macro to use uint64_t instead of long_u.
Replace long_i with plain long.
long_i was just plain long, adding marker __w64, to be used by
Microsoft's compilers only, as an aid when transitioning from 32 bits to
64 bits. Purpose of this marker was, in fact, to make a 32 bit compiler
emit the same warnings that a 64 bit compiler would.
This __w64 marker is nowadays deprecated by said compilers, and use of a
real 64 bit compiler is recommended instead. See
http://msdn.microsoft.com/en-us/library/s04b5w00.aspx for details.
So, there's no reason to maintain this anymore, and thus is removed.
Refactoring long into int64_t is not attempted, as doing that in a bulk
way is too much complicated. That is left to be done later, on a
file-by-file basis, probably intermixed with file-by-file -Wconversion
activation.
Requested in #459.
- Replace int_u with uint32_t (same size, should give no problems).
In fact, only usage found seems to be dead code (some functions in
ui.h seem not to be used anymore).
- Remove int_u typedef.
Requested in #459.
- Replace short_u with uint16_t (same size, should give no problems).
- When possible, remove explicit downcasts so that they are found when
flag -Wconversion enabled.
- Remove short_u typedef.
Requested in #459.
Files changed: charset.c, buffer.c, diff.c, edit.c,
ex_cmds.c, ex_cmds2.c and ex_docmd.c.
The remaining alloc's in these files require more careful attention to
remove.
reverting broad cosmetic/style change because:
- increases merge-conflicts
- increases overhead of merging upstream Vim patches
- reasons for change are ambiguous, so default to no change