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