Paul Marquess wrote:
From: John E. Malmberg [mailto:[EMAIL PROTECTED]
With the upgrade, I am getting two failures in blead on OpenVMS Alpha.

Built with Non threaded build, large files, and experimental symbolic
link support on an ODS-5 volume.

ODS-5 volume means that the traditional name mangling of extra dots in
the filename on disk to be C<_> is not always being done, and my source
tree is identical in filenames, including case to that on a UNIX platform.

ext/Compress/Zlib/t/03zlib-v1......................FAILED at test 398

not ok 398 - flush not ok
#   Failed test 'flush not ok'
#   at [-.ext.compress.zlib.t]03zlib-v1.t line 1184.
not ok 399
#   Failed test at [-.ext.compress.zlib.t]03zlib-v1.t line 1185.
#          got: '0'
#     expected: '-2'
not ok 400 - flush ok
#   Failed test 'flush ok'
#   at [-.ext.compress.zlib.t]03zlib-v1.t line 1186.
ok 401 - Closed
# Looks like you failed 3 tests of 401.



The first two tests failing are checking that when you give an invalid
parameter to gzflush it returns Z_STREAM_ERROR (which is -2). In your case
it is returning 0, which is success.

The third test failing is checking that a subsequent flush works, but in
your case it is failing.


I am in the debugger, and the call to flush is looking up an error to a
previous operation and getting "stream error".


That sounds correct if this is the line of code you are executing from the
test harness.

    $status = $fil->gzflush(0xfff);

Can you confirm that at the end of this block of code (from
Compress-Raw-Zlib/Zlib.xs) that RETVAL is -2. If that is the case then the
problem is nothing to do with the zlib library itself.
    for (;;) {
        if (s->stream.avail_out == 0) {
            /* consumed all the available output, so extend it */
            Sv_Grow(output, SvLEN(output) + bufinc) ;
            cur_length += increment ;
            s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) +
cur_length ;
            increment = bufinc ;
            s->stream.avail_out = increment;
            bufinc *= 2 ;
        }
        RETVAL = deflate(&(s->stream), f);

        /* deflate has finished flushing only when it hasn't used up
         * all the available space in the output buffer:
         */
        if (s->stream.avail_out != 0 || RETVAL != Z_OK )
            break;
    }

    RETVAL =  (RETVAL == Z_STREAM_END ? Z_OK : RETVAL) ;

Assuming you have a RETVAL of -2, the next thing that happens is the
creation of a dual-type scalar in this macro

RETVAL is -2 at this point.

#define setDUALstatus(var, err)                                         \
                sv_setnv(var, (double)err) ;                            \
                sv_setpv(var, ((err) ? GetErrorString(err) : "")) ;     \
                SvNOK_on(var);

This is where the lookup is done that you said was giving "stream error",
which is would I would expect.

So after running setDUALstatus I would expect "var" to have an integer value
of -2 and a string value of "stream error". If that is the case it is
somehow getting changed before it get back to the test script.

And here I am stuck. The X11 interface to the source code debugger is not allowing me to set any view options, as it is displaying a small unexpandable box.

And these modules were not compiled with with the macros expanded, so it is difficult for me to translate it out for what it is doing.

The Perl debugger is returning a number of 0, and the string of 'stream error'.

So the next step is for me to check that I have up to date sv.* modules.

Thanks for the help.

-John
[EMAIL PROTECTED]
Personal Opinion Only


Reply via email to