From 8d62af1f60cf9775352342867736df3e7f488b43 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Mon, 14 Jun 2010 17:27:08 +0000 Subject: Don't mix PopplerRectangle and EvRectangle We shouldn't assume a PopplerRectangle was created with g_new(), so better use poppler_rectangle_free(). --- (limited to 'backend') diff --git a/backend/djvu/djvu-text-page.c b/backend/djvu/djvu-text-page.c index 10fe1a4..3f171d1 100644 --- a/backend/djvu/djvu-text-page.c +++ b/backend/djvu/djvu-text-page.c @@ -233,7 +233,7 @@ djvu_text_page_sexpr_process (DjvuTextPage *page, miniexp_t end) { if (page->bounding_box || p == start) { - EvRectangle *new_rectangle = g_new (EvRectangle, 1); + EvRectangle *new_rectangle = ev_rectangle_new (); new_rectangle->x1 = miniexp_to_int (miniexp_nth (1, p)); new_rectangle->y1 = miniexp_to_int (miniexp_nth (2, p)); new_rectangle->x2 = miniexp_to_int (miniexp_nth (3, p)); diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc index 6d660b6..e9657d9 100644 --- a/backend/pdf/ev-poppler.cc +++ b/backend/pdf/ev-poppler.cc @@ -1555,7 +1555,8 @@ pdf_document_find_find_text (EvDocumentFind *document_find, GList *matches, *l; PopplerPage *poppler_page; gdouble height; - + GList *retval = NULL; + g_return_val_if_fail (POPPLER_IS_PAGE (page->backend_page), NULL); g_return_val_if_fail (text != NULL, NULL); @@ -1568,14 +1569,22 @@ pdf_document_find_find_text (EvDocumentFind *document_find, poppler_page_get_size (poppler_page, NULL, &height); for (l = matches; l && l->data; l = g_list_next (l)) { PopplerRectangle *rect = (PopplerRectangle *)l->data; - gdouble tmp; + EvRectangle *ev_rect; + + ev_rect = ev_rectangle_new (); + ev_rect->x1 = rect->x1; + ev_rect->x2 = rect->x2; + /* Invert this for X-style coordinates */ + ev_rect->y1 = height - rect->y2; + ev_rect->y2 = height - rect->y1; - tmp = rect->y1; - rect->y1 = height - rect->y2; - rect->y2 = height - tmp; + retval = g_list_prepend (retval, ev_rect); } - - return matches; + + g_list_foreach (matches, (GFunc)poppler_rectangle_free, NULL); + g_list_free (matches); + + return g_list_reverse (retval); } static void -- cgit v0.9.1