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