The cause of the problem is the maximum string length hard coded
in /usr/share/dejagnu/remote.exp:

    # Wait for either $timeout seconds to elapse, or for the program to
    # exit.
    expect {
        -i $spawn_id -timeout $timeout -re ".+" {
            append output $expect_out(buffer)
            if { [string length $output] < 512000 } {
                exp_continue -continue_timer
            }
        }
        timeout {
            warning "program timed out."
        }
        eof {
            set got_eof 1
        }
    }

Any bytes past the initial 512000 bytes seem to be discarded.  I
can fix my immediate problem by increasing this value.  Maybe this
should be configurable on the command line?  This limit is
probably there for a reason, though.  With a small expect buffer
or a very high limit the loop generating the output string may
take a lot of time (O(n^2)).  Maybe the chunks of data could be
stored in an array of strings during the loop and be copied and
concatenated into preallocated memory in a single pass at the end
of a loop?

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt
IBM Germany


_______________________________________________
DejaGnu mailing list
DejaGnu@gnu.org
https://lists.gnu.org/mailman/listinfo/dejagnu

Reply via email to