You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by Andrew Black <ab...@roguewave.com> on 2006/08/07 23:11:33 UTC
[patch]Re: examples in OUTPUT state
Greetings all.
Attached is a short patch that should resolve this issue.
The cause of the error was that the output was smaller than the static
holding buffer, so the call to memcmp was comparing beyond the amount of
data that had been read into the buffer. This in turn was leading to a
difference in the unfilled portions of the buffer. This difference was
caused by the natural variations in uninitialized memory.
--Andrew Black
Martin Sebor wrote:
> There are a bunch of examples that the exec utility reports as
> having failed with the OUTPUT status even though when executed
> by hand they run successfully to completion and produce the
> expected output. I suspect there must be a bug in the utility.
>
> $ make auto_ptr run; ./auto_ptr > auto_ptr.out && diff auto_ptr.out
> /build/sebor/stdcxx/examples/manual/out/auto_ptr.out; echo $?
> make: `auto_ptr' is up to date.
> NAME STATUS ASSERTS FAILED PERCNT
> auto_ptr OUTPUT
> 0
>
> Martin
Re: [patch]Re: examples in OUTPUT state
Posted by Andrew Black <ab...@roguewave.com>.
Sorry about forgetting that. I've been somewhat focused on the windows
port today.
2006-08-07 Andrew Black <ab...@roguewave.com>
* output.cpp (check_example): Initialize read buffers prior to read to
prevent incorrect results
Martin Sebor wrote:
> Andrew Black wrote:
>> Greetings all.
>>
>> Attached is a short patch that should resolve this issue.
>
> Yup, looks good, thanks!
>
> Can you please post a ChangeLog to go with your change so I can
> commit it?
>
> Thanks again!
> Martin
>
>>
>> The cause of the error was that the output was smaller than the static
>> holding buffer, so the call to memcmp was comparing beyond the amount
>> of data that had been read into the buffer. This in turn was leading
>> to a difference in the unfilled portions of the buffer. This
>> difference was caused by the natural variations in uninitialized memory.
>>
>> --Andrew Black
>>
>> Martin Sebor wrote:
>>
>>> There are a bunch of examples that the exec utility reports as
>>> having failed with the OUTPUT status even though when executed
>>> by hand they run successfully to completion and produce the
>>> expected output. I suspect there must be a bug in the utility.
>>>
>>> $ make auto_ptr run; ./auto_ptr > auto_ptr.out && diff auto_ptr.out
>>> /build/sebor/stdcxx/examples/manual/out/auto_ptr.out; echo $?
>>> make: `auto_ptr' is up to date.
>>> NAME STATUS ASSERTS FAILED PERCNT
>>> auto_ptr OUTPUT
>>> 0
>>>
>>> Martin
>>
>>
>> ------------------------------------------------------------------------
>>
>> Index: output.cpp
>> ===================================================================
>> --- output.cpp (revision 429465)
>> +++ output.cpp (working copy)
>> @@ -296,6 +296,10 @@
>> size_t out_read, ref_read;
>> int match = 1;
>>
>> + /* Zero out holding buffers to avoid false differences */
>> + memset (out_buf, 0, DELTA_BUF_LEN);
>> + memset (ref_buf, 0, DELTA_BUF_LEN);
>> +
>> while (!feof (reference) && !feof (output)) {
>> /* First, read a block from the files into the buffer */
>> out_read = fread (out_buf, DELTA_BUF_LEN, 1, output);
>
Re: [patch]Re: examples in OUTPUT state
Posted by Martin Sebor <se...@roguewave.com>.
Andrew Black wrote:
> Greetings all.
>
> Attached is a short patch that should resolve this issue.
Yup, looks good, thanks!
Can you please post a ChangeLog to go with your change so I can
commit it?
Thanks again!
Martin
>
> The cause of the error was that the output was smaller than the static
> holding buffer, so the call to memcmp was comparing beyond the amount of
> data that had been read into the buffer. This in turn was leading to a
> difference in the unfilled portions of the buffer. This difference was
> caused by the natural variations in uninitialized memory.
>
> --Andrew Black
>
> Martin Sebor wrote:
>
>> There are a bunch of examples that the exec utility reports as
>> having failed with the OUTPUT status even though when executed
>> by hand they run successfully to completion and produce the
>> expected output. I suspect there must be a bug in the utility.
>>
>> $ make auto_ptr run; ./auto_ptr > auto_ptr.out && diff auto_ptr.out
>> /build/sebor/stdcxx/examples/manual/out/auto_ptr.out; echo $?
>> make: `auto_ptr' is up to date.
>> NAME STATUS ASSERTS FAILED PERCNT
>> auto_ptr OUTPUT
>> 0
>>
>> Martin
>
>
> ------------------------------------------------------------------------
>
> Index: output.cpp
> ===================================================================
> --- output.cpp (revision 429465)
> +++ output.cpp (working copy)
> @@ -296,6 +296,10 @@
> size_t out_read, ref_read;
> int match = 1;
>
> + /* Zero out holding buffers to avoid false differences */
> + memset (out_buf, 0, DELTA_BUF_LEN);
> + memset (ref_buf, 0, DELTA_BUF_LEN);
> +
> while (!feof (reference) && !feof (output)) {
> /* First, read a block from the files into the buffer */
> out_read = fread (out_buf, DELTA_BUF_LEN, 1, output);