summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2005-07-22 15:34:32 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2005-07-22 15:34:32 +0000
commitda260ce8356e69a553c2c4737c28da686b88fb4c (patch)
tree620cebf4dff58c297e23b89cb20aff481495136b
parentfee54dfc8fb042b2e2f1b13507ecf0d030c6542b (diff)
downloadgdk-pixbuf-da260ce8356e69a553c2c4737c28da686b88fb4c.tar.gz
Make anchored patterns work as they did before.
2005-07-22 Matthias Clasen <mclasen@redhat.com> * gdk-pixbuf-io.c (format_check): Make anchored patterns work as they did before.
-rw-r--r--gdk-pixbuf/ChangeLog5
-rw-r--r--gdk-pixbuf/gdk-pixbuf-io.c12
2 files changed, 13 insertions, 4 deletions
diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog
index c79228407..7d0be6bca 100644
--- a/gdk-pixbuf/ChangeLog
+++ b/gdk-pixbuf/ChangeLog
@@ -1,5 +1,10 @@
2005-07-22 Matthias Clasen <mclasen@redhat.com>
+ * gdk-pixbuf-io.c (format_check): Make anchored patterns work
+ as they did before.
+
+2005-07-22 Matthias Clasen <mclasen@redhat.com>
+
* gdk-pixbuf-io.c (format_check): Interpret patterns where
the first byte of the mask is '*' as unanchored. (#311011)
(gdk_pixbuf_new_from_file): Use the first 256 bytes for
diff --git a/gdk-pixbuf/gdk-pixbuf-io.c b/gdk-pixbuf/gdk-pixbuf-io.c
index a8faa782f..f67dd0355 100644
--- a/gdk-pixbuf/gdk-pixbuf-io.c
+++ b/gdk-pixbuf/gdk-pixbuf-io.c
@@ -51,21 +51,21 @@ format_check (GdkPixbufModule *module, guchar *buffer, int size)
int i, j;
gchar m;
GdkPixbufModulePattern *pattern;
- gboolean unanchored;
+ gboolean anchored;
guchar *prefix, *mask;
for (pattern = module->info->signature; pattern->prefix; pattern++) {
if (pattern->mask && pattern->mask[0] == '*') {
prefix = pattern->prefix + 1;
mask = pattern->mask + 1;
- unanchored = TRUE;
+ anchored = FALSE;
}
else {
prefix = pattern->prefix;
mask = pattern->mask;
- unanchored = FALSE;
+ anchored = TRUE;
}
- for (i = 0; unanchored && i < size; i++) {
+ for (i = 0; i < size; i++) {
for (j = 0; i + j < size && prefix[j] != 0; j++) {
m = mask ? mask[j] : ' ';
if (m == ' ') {
@@ -85,8 +85,12 @@ format_check (GdkPixbufModule *module, guchar *buffer, int size)
break;
}
}
+
if (prefix[j] == 0)
return pattern->relevance;
+
+ if (anchored)
+ break;
}
}
return 0;