]> www.fi.muni.cz Git - evince.git/commitdiff
Don't mix PopplerRectangle and EvRectangle
authorCarlos Garcia Campos <carlosgc@gnome.org>
Mon, 14 Jun 2010 17:27:08 +0000 (19:27 +0200)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Mon, 14 Jun 2010 17:30:10 +0000 (19:30 +0200)
We shouldn't assume a PopplerRectangle was created with g_new(), so
better use poppler_rectangle_free().

backend/djvu/djvu-text-page.c
backend/pdf/ev-poppler.cc
libview/ev-jobs.c

index 10fe1a48987f3994d0170e4fa97a48739ad802ef..3f171d1efdd1a3860951353ff3601fd52bbae3e3 100644 (file)
@@ -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));
index 6d660b687051aca125cd6f24310685c78cac88bd..e9657d9dc180a7ec13c41e23d1b6546c333b1aeb 100644 (file)
@@ -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
index 5cbb6d5d94587a463eeb0b2751fe5d30ce60fd9d..140c51ad9a9e67b936fbe31cb9941cf516f44bab 100644 (file)
@@ -1087,7 +1087,7 @@ ev_job_find_dispose (GObject *object)
                gint i;
 
                for (i = 0; i < job->n_pages; i++) {
-                       g_list_foreach (job->pages[i], (GFunc)g_free, NULL);
+                       g_list_foreach (job->pages[i], (GFunc)ev_rectangle_free, NULL);
                        g_list_free (job->pages[i]);
                }