[evolution-patches] patch for bug #62136 (url highlighting)
- From: Jeffrey Stedfast <fejj ximian com>
- To: evolution-patches ximian com
- Subject: [evolution-patches] patch for bug #62136 (url highlighting)
- Date: Tue, 03 Aug 2004 13:20:01 -0400
http://bugzilla.ximian.com/show_bug.cgi?id=62136
The lone '@' character in his signature was causing the problem since
the trie_search() would return that position but the ::start() method
would fail (it's not an email address) and so the function would
immediately return FALSE (aka "no patterns found").
changed the code to loop until it has scanned the entire buffer it was
given.
Jeff
? 24026.patch
? 62136.patch
? body
? body.c
? body.txt
? body2.txt
? charset-map.c
? charset-map.diff
? class.sh
? cmsutil.c
? date.patch
? flags
? foo
? foo.txt
? foo2.txt
? gw-body.txt
? iso
? iso.c
? lang.patch
? namespace.sh
? smime
? providers/imap4/reconnect.patch
? tests/data/camel-mime-tests.tar.gz
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/camel/ChangeLog,v
retrieving revision 1.2234
diff -u -r1.2234 ChangeLog
--- ChangeLog 3 Aug 2004 16:31:47 -0000 1.2234
+++ ChangeLog 3 Aug 2004 17:14:26 -0000
@@ -1,5 +1,11 @@
2004-08-03 Jeffrey Stedfast <fejj novell com>
+ * camel-url-scanner.c (camel_url_scanner_scan): In the case of
+ start() or end() failing, loop starting with the first character
+ immediately following the failed match position. Fixes bug #62136.
+
+2004-08-03 Jeffrey Stedfast <fejj novell com>
+
* providers/imap4/camel-imap4-store.c (imap4_construct): Pass a
reconnect func.
Index: camel-url-scanner.c
===================================================================
RCS file: /cvs/gnome/evolution/camel/camel-url-scanner.c,v
retrieving revision 1.13
diff -u -r1.13 camel-url-scanner.c
--- camel-url-scanner.c 28 Jun 2004 00:18:20 -0000 1.13
+++ camel-url-scanner.c 3 Aug 2004 17:14:26 -0000
@@ -76,29 +76,33 @@
gboolean
camel_url_scanner_scan (CamelUrlScanner *scanner, const char *in, size_t inlen, urlmatch_t *match)
{
- const char *pos, *inend;
+ const char *pos, *inptr, *inend;
urlpattern_t *pat;
int pattern;
g_return_val_if_fail (scanner != NULL, FALSE);
g_return_val_if_fail (in != NULL, FALSE);
- if (!(pos = e_trie_search (scanner->trie, in, inlen, &pattern)))
- return FALSE;
-
- pat = g_ptr_array_index (scanner->patterns, pattern);
-
- match->pattern = pat->pattern;
- match->prefix = pat->prefix;
-
+ inptr = in;
inend = in + inlen;
- if (!pat->start (in, pos, inend, match))
- return FALSE;
- if (!pat->end (in, pos, inend, match))
- return FALSE;
+ do {
+ if (!(pos = e_trie_search (scanner->trie, inptr, inlen, &pattern)))
+ return FALSE;
+
+ pat = g_ptr_array_index (scanner->patterns, pattern);
+
+ match->pattern = pat->pattern;
+ match->prefix = pat->prefix;
+
+ if (pat->start (in, pos, inend, match) && pat->end (in, pos, inend, match))
+ return TRUE;
+
+ inptr = g_utf8_next_char (pos);
+ inlen = inend - inptr;
+ } while (inptr != NULL && inptr < inend);
- return TRUE;
+ return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]