Package: libdjvulibre21
Version: 3.5.25-1
Severity: normal

minilisp_set_output() used to reset the minilisp_puts variable to its default value, but it doesn't do it anymore. Could the old behavior be retained? Similarly, minilisp_set_input() should probably reset minilisp_(un)getc variables.

I attached a test program that triggers the issue.

With libdjvulibre21 3.5.24-9:

$ ./test-print
minilisp_puts = 0xf76cdf90
minilisp_puts = 0x8048674
minilisp_puts = 0xf76cdf90
()

With libdjvulibre21 3.5.25-1:

$ ./test-print
minilisp_puts = 0xf772a180
minilisp_puts = 0x8048674
minilisp_puts = 0x8048674
Eeek!
Aborted


-- System Information:
Debian Release: wheezy/sid
   APT prefers unstable
   APT policy: (990, 'unstable'), (500, 'experimental')
Architecture: i386 (x86_64)

Kernel: Linux 3.2.0-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=pl_PL.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libdjvulibre21 depends on:
ii  libc6              2.13-27
ii  libdjvulibre-text  3.5.25-1
ii  libgcc1            1:4.7.0~rc2-1
ii  libjpeg8           8d-1
ii  libstdc++6         4.7.0~rc2-1
ii  multiarch-support  2.13-27

--
Jakub Wilk
#include <libdjvu/miniexp.h>
#include <stdio.h>
#include <stdlib.h>

int my_minilisp_puts(const char *s)
{
    fprintf(stderr, "Eeek!\n");
    abort();
}

int main(int argc, char **argv)
{
    printf("minilisp_puts = %p\n", minilisp_puts);
    minilisp_puts = my_minilisp_puts;
    printf("minilisp_puts = %p\n", minilisp_puts);
    minilisp_set_output(stdout);
    printf("minilisp_puts = %p\n", minilisp_puts);
    miniexp_print(miniexp_nil);
}

// vim:ts=4 sw=4 et

Reply via email to