Not sure I follow.
The code is testing <locale> money_get. Agree that the last argument is
an input-output argument.
Pseudo-code
long double ex;
do_get(..., ex); // money_get writes to ex
assert(ex == <expected_value>); // tests for expected value
The test is passing, so I am assuming that money_get is writing the
expected value to 'ex'.
However, scan-build is flagging the test expression:
assert(ex == expected_value)
as a "garbage value", which is true of an uninitialized variable.
So, initializing the variable removes the "garbage", and it is my
understanding that the last argument is used as a buffer and that the
actual value passed in has no impact on what gets written to it as an
out-param.
So that is my understanding, if that is wrong, please provide concrete
guidance that corrects my misunderstanding and I'd be happy to
investigate further.
Thanks,
Steve
On 10/22/2014 06:22 AM, Jonathan Roelofs wrote:
Steve,
IIRC, the last parameter of these get functions is supposed to be a write-only
return argument. Did you diagnose why the lack of initialization is causing
problems (because that's what should be fixed, not this test)?
Cheers,
Jon
On 10/21/14 9:05 PM, Steve MacKenzie wrote:
My scan-build run against libc++ tests and headers continues.. up to and
including localization tests.
The diff is applicable to libcxx/test/localization tests only, all fixes address
dead initialization.
Three suspected scan-build false positive bugs were opened as
well:21326,21333,21335.
Progress of the run is published here:
http://stevemac123.wordpress.com/static-analysis-run/
Thanks,
Steve MacKenzie
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits