RFR(S): JDK-8073584 Native compilation warning in unpack code
Dmitry Samersoff
dmitry.samersoff at oracle.com
Sun Feb 22 08:53:30 UTC 2015
John,
Generally speaking, we should select warnings carefully - not just turn
all of it on.
For instance, I don't see any value of "format is not a string literal"
warning for JDK code.
Please, see also below.
On 2015-02-22 06:20, John Rose wrote:
> On Feb 21, 2015, at 5:38 PM, Kumar Srinivasan <kumar.x.srinivasan at oracle.com> wrote:
>>
>> Hi Dmitry,
>>
>> adding John on this.
>>
>> unpack.cpp
>> What is wrong with the unary operator ? Does this emit a compiler warning ?
>
> (It's the ternary operator right?)
> The problem is that the format string (oh, the cleverness!!) is non-constant.
Yes. Actually sprintf here could be replaced with just a strcpy.
>> - sprintf(buf, ((uint)e.tag < CONSTANT_Limit)? TAG_NAME[e.tag]: "%d", e.tag);
>> + if ((uint)e.tag < CONSTANT_Limit) {
>> + sprintf(buf, "%s", TAG_NAME[e.tag]);
>> + }
>> + else {
>> + sprintf(buf, "%d", e.tag);
>> + }
>>
>> If you are eliminating the unary operator then, the formatting should be
>>
>> if (.....)
>> ......
>> else
>> ......
>> or
>> if (.....) {
>> ....
>> else { <--- note, please don't introduce new formatting/conventions.
>
> I agree on that. Let's be whitespace chameleons.
I'll change it.
>
>> ....
>> }
>>
>> main.cpp:
>>
>> + (void) (fread(&filecrc, sizeof(filecrc), 1, u.infileptr) + 1);
>>
>> UGH. What about other compilers are they ok with this ? This may very well
>> get suppressed for gcc, but might emit warnings on MSVC or SunStudio.
It works for all JDK compilers.
>
> Surely it would be better to bind the result of fread to a throwaway variable, if there's a warning about unused return value.
> void* fread_result_ignored =
> fread(&filecrc, sizeof(filecrc), 1, u.infileptr);
It causes "assigned but unused variable" warning.
-Dmitry
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.
More information about the core-libs-dev
mailing list