Package: libdjvulibre21
Version: 3.5.25-1
Severity: important

After upgrading libdjvulibre21 to 3.5.25-1, djview4 stopped showing hyperlinks. It looks like ddjvu_document_get_pageanno() returns just an empty list. I attached a small test program to illustrate this problem.

With libdjvulibre21 3.5.24-9:
$ ./extract-anno djvulibre-3.5.25/doc/old/lizard2005-antz.djvu 0 | wc -c
2895

With libdjvulibre21 3.5.25-1:
$ ./extract-anno djvulibre-3.5.25/doc/old/lizard2005-antz.djvu 0
()


-- 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/ddjvuapi.h>
#include <libdjvu/miniexp.h>

void handle_ddjvu_messages(ddjvu_context_t *context)
{
    const ddjvu_message_t *message;
    const struct ddjvu_message_error_s *error_message;
    ddjvu_message_wait(context);
    while ((message = ddjvu_message_peek(context)))
    {
        switch(message->m_any.tag)
        {
        case DDJVU_ERROR:
            error_message = (const struct ddjvu_message_error_s *) message;
            fprintf(stderr, "%s, %s:%d: %s\n",
                error_message->function,
                error_message->filename,
                error_message->lineno,
                error_message->message
            );
            exit(EXIT_FAILURE);
            break;
        default:
            break;
        }
        ddjvu_message_pop(context);
   }
}

int main(int argc, char **argv)
{
    ddjvu_context_t *context;
    ddjvu_document_t *document;
    miniexp_t expr;
    int pageno;
    int n;
    if (argc != 3)
    {
        fprintf(stderr, "Usage: %s <djvu-file> <page>\n", argv[0]);
        return EXIT_FAILURE;
    }
    context = ddjvu_context_create(argv[0]);
    if (context == NULL)
        abort();
    document = ddjvu_document_create_by_filename(context, argv[1], 0);
    if (document == NULL)
        abort();
    while ((expr = ddjvu_document_get_pageanno(document, atoi(argv[2]))) == miniexp_dummy)
        handle_ddjvu_messages(context);
    miniexp_print(expr);
    ddjvu_context_release(context);
}

// vim:ts=4 sw=4 et

Reply via email to