On 30 Aug, Kay Schenk wrote:
> 
> 
> On 08/29/2016 04:14 PM, Don Lewis wrote:
>> When building OpenOffice trunk revsion r1758161 as a FreeBSD port on
>> FreeBSD 12.0-CURRENT with clang 3.8.0, I get the following warnings.
>> I'm mostly interested in the OpenOffice code and not the bundled
>> external code, so I specifically built the FreeBSD port it uses
>> --with-system-foo extensively which minimizes the compilation of third
>> party code.  The total number of warnings is 5105.
>> 
>> 1175 -Wtautological-undefined-compare
>>  949 -Wunused-private-field
>>  660 -Wshift-negative-value
>>  391 -Wunused-parameter
>>  362 -Wunused-const-variable
>>  312 -Woverloaded-virtual
>>  177 -Wunused-variable
>>  116 -Winfinite-recursion
>>  109 -Wlogical-op-parentheses
>>   93 -Wsign-compare
>>   76 -Wdelete-non-virtual-dtor
>>   72 -Wint-to-void-pointer-cast
>>   63 -Wshadow
>>   55 -Wunused-function
>>   41 -Wformat
>>   36 -Wreturn-type-c-linkage
>>   30 -Wchar-subscripts
>>   27 -Wdeprecated-declarations
>>   26 -Wundefined-bool-conversion
>>   26 -Wsizeof-pointer-memaccess
>>   26 -Wformat-security
>>   24 -Wunused-local-typedef
>>   22 -Wmacro-redefined
>>   21 -Wswitch
>>   20 -Wbitwise-op-parentheses
>>   18 -Winvalid-source-encoding
>>   13 -Wuninitialized
>>   11 -Wtautological-compare
>>   11 -Wlogical-not-parentheses
>>   11 -Wdangling-else
>>    9 -Wmismatched-new-delete
>>    8 -Wimplicit-function-declaration
>>    8 -Wheader-guard
>>    8 -Wcomment
>>    7 -Wtautological-constant-out-of-range-compare
>>    7 -Wself-assign
>>    6 -Wunused-value
>>    6 -Wunneeded-internal-declaration
>>    6 -Wtautological-pointer-compare
>>    6 -Wpointer-bool-conversion
>>    6 -Wparentheses-equality
>>    6 -Wdynamic-class-memaccess
>>    6 -Wconstant-conversion
>>    5 -Wpointer-sign
>>    4 -Wnull-conversion
>>    3 -Wunsequenced
>>    3 -Wreorder
>>    3 -Wknr-promoted-parameter
>>    3 -Wint-to-pointer-cast
>>    2 -Wstrncat-size
>>    2 -Wstring-compare
>>    2 -Wsometimes-uninitialized
>>    2 -Wconstant-logical-operand
>>    2 -Warray-bounds
>>    1 -Wunused-comparison
>>    1 -Wunknown-pragmas
>>    1 -Wstring-plus-int
>>    1 -Wpotentially-evaluated-expression
>>    1 -Wnon-literal-null-conversion
>>    1 -Wmismatched-tags
>>    1 -Wincompatible-pointer-types-discards-qualifiers
>>    1 -Wimplicit-int
>>    1 -Wignored-qualifiers
>>    1 -Wformat-extra-args
>>    1 -Wcompare-distinct-pointer-types
>>    1 -Wc++11-compat-deprecated-writable-strings
>> 
>> 
>> A couple -Wtautological-undefined-compare warnings:
>> 
>> warning: reference cannot be bound to dereferenced null pointer in 
>> well-defined C++ code; comparison may be assumed to always evaluate to false 
>> [-Wtautologica
>> l-undefined-compare]
>>     if (&other == NULL) {
>>          ^~~~~    ~~~~
> 
> This one is apparently an old holdoever from C and not recommended
> currently...
> 
> See. e.g:
> http://stackoverflow.com/questions/17772103/can-i-use-if-pointer-instead-of-if-pointer-null
> 
> It probably needs an update to accomplish what it's trying to do.
> 
> 
>> 
>> warning: 'this' pointer cannot be null in well-defined C++ code; comparison 
>> may be assumed to always evaluate to false [-Wtautological-undefin
>> ed-compare]
>>   if(this == 0 || this == &src) {
>>      ^~~~    ~
>> 
> 
> Same here...

nullptr is a c++11 thing and is not supported by older compilers.

When I upgraded one of the bundled packages (nss?) I found it had some
test code that used nullptr that didn't compille on many of our
platforms.  I had to disconnect the tests from the build.

The warnings are about things that can't be null.  In the first case if
you have a reference to another variable, then the address of that
variable can't be null.  In the second case, this could only be null if
you call a method on a null object.

One of the bits of code that I looked at for the first error looked
suspicious.  It looks like it is passing *ptr as a reference parameter.
I'm not sure that's legal, and then the question is what happens if ptr
is null?  Other calls to the same function were passing a regular
variable by reference.  The appropriate fix in this case my be to create
a variant function that accepts a pointer and checks for NULL.  Rather
than checking &ref == NULL.



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@openoffice.apache.org
For additional commands, e-mail: dev-h...@openoffice.apache.org

Reply via email to