On Monday, November 14, 2011 8:27 AM, "NormW" <no...@gknw.net> wrote: > Hi, > Aimed the Open Watcom Compiler at 1.7.1 subversion source and was > pleasantly surprised how much built on the first go. > > The one real blip was that OWC 1.9 (nor a near future release 2.0) > supports 64-bit switch expressions, and there is one such used in: > .\subversion\libsvn_ra_svn\client.c (1170). > > While annoying, a change similar to the following should suit all likely > compilers in this case: > > > --- client.c.orig 2011-09-28 02:30:36.000000000 +1000 > > +++ client.c 2011-11-13 06:14:09.109375000 +1100 > > @@ -1166,15 +1166,12 @@ > > static svn_tristate_t > > optbool_to_tristate(apr_uint64_t v) > > { > > - switch (v) > > - { > > - case TRUE: > > - return svn_tristate_true; > > - case FALSE: > > - return svn_tristate_false; > > - default: /* Contains SVN_RA_SVN_UNSPECIFIED_NUMBER */ > > - return svn_tristate_unknown; > > - } > > + if (v == TRUE) > > + return svn_tristate_true; > > + if (v == FALSE) > > + return svn_tristate_false; > > + > > + return svn_tristate_unknown; /* Contains SVN_RA_SVN_UNSPECIFIED_NUMBER */ > > } >
Well, perhaps fix the compiler instead of rewriting everyone's switch statements? :-) (But not opposed to committing this if people can't build svn because of this.) > FYI: The 'warn' blips; at least the first 2 are already noted in the > source, while for #3 it's unclear how this can return an int.... > > > D:\Projects\srcs\subversion-1.7.1\subversion\libsvn_delta\compose_delta.c(707): > > Warning! W124: Comparison result always 1 > > D:\Projects\srcs\subversion-1.7.1\subversion\libsvn_repos\reporter.c(189): > > Warning! W124: Comparison result always 0 As you say: known issues noted in comments. Yes, would be nice to fix them someday. > > D:\Projects\srcs\subversion-1.7.1\subversion\libsvn_subr\pool.c(55): > > Warning! W107: Missing return value for function 'abort_on_pool_failure' If we make this return an int then we'd have to cast it at the callsite (it's a callback function). *shrug* > > D:\Projects\srcs\subversion-1.7.1\subversion\libsvn_subr\skel.c(233): > > Warning! W136: Comparison equivalent to 'unsigned == 0' The code is correct (and future-proof if len ever becomes signed). > > D:\Projects\srcs\subversion-1.7.1\subversion\libsvn_subr\stream.c(1066): > > Warning! W136: Comparison equivalent to 'unsigned == 0' Same > > D:\Projects\srcs\subversion-1.7.1\subversion\libsvn_ra_svn\marshal.c(577): > > Warning! W124: Comparison result always 0 Same issue as in the 2nd warning: checks for overflow by checking whether it's "> APR_SIZE_MAX". Perhaps we should restructure the check? > > D:\Projects\srcs\subversion-1.7.1\subversion\libsvn_ra_neon\merge.c(159): > > Warning! W113: Pointer type mismatch > > D:\Projects\srcs\subversion-1.7.1\subversion\libsvn_ra_neon\merge.c(159): > > Note! N2003: source conversion type is 'void *' > > D:\Projects\srcs\subversion-1.7.1\subversion\libsvn_ra_neon\merge.c(159): > > Note! N2004: target conversion type is 'enum svn_recurse_kind ' Casting an enum { x=1, y=2 } to/from a void*. We could restructure this with sentinels, I suppose: static void *recurse[2]; apr_hash_set(valid_targets, key, klen, &recurse[FALSE]); apr_hash_set(valid_targets, key, klen, &recurse[TRUE]); > > D:\Projects\srcs\subversion-1.7.1\subversion\svnlook\main.c(2376): Warning! > > W136: Comparison equivalent to 'unsigned == 0' Again: too trigger-happy. It's valid to ask whether an unsigned is nonpositive. > > Not saying these are bugs - just what the OWC 1.9 says. (Hence FYI). > Norm > Thanks for your input, Daniel