# HG changeset patch # User Stu Tomlinson # Date 1115338470 0 # Node ID acaf64c659b9c320903578bebc8ad06e67b268e1 # Parent 0711078e0e2dd049596ed633588cb5cb72f21a55 [gaim-migrate @ 12624] I hope all you people in the UK have voted. This fixes some linkificationation stuff. committer: Tailor Script diff -r 0711078e0e2d -r acaf64c659b9 src/util.c --- a/src/util.c Thu May 05 18:31:36 2005 +0000 +++ b/src/util.c Fri May 06 00:14:30 2005 +0000 @@ -1415,8 +1415,7 @@ gaim_markup_linkify(const char *text) { const char *c, *t, *q = NULL; - char *tmp, *tmpurlbuf; - char url_buf[BUF_LEN * 4]; + char *tmp, *tmpurlbuf, *url_buf; gunichar g; gboolean inside_html = FALSE; int inside_paren = 0; @@ -1472,11 +1471,11 @@ t--; } - strncpy(url_buf, c, t - c); - url_buf[t - c] = 0; + url_buf = g_strndup(c, t - c); tmpurlbuf = gaim_unescape_html(url_buf); g_string_append_printf(ret, "%s", tmpurlbuf, url_buf); + g_free(url_buf); g_free(tmpurlbuf); c = t; break; @@ -1505,12 +1504,12 @@ if ((*(t - 1) == ')' && (inside_paren > 0))) { t--; } - strncpy(url_buf, c, t - c); - url_buf[t - c] = 0; + url_buf = g_strndup(c, t - c); tmpurlbuf = gaim_unescape_html(url_buf); g_string_append_printf(ret, "%s", tmpurlbuf, url_buf); + g_free(url_buf); g_free(tmpurlbuf); c = t; break; @@ -1529,11 +1528,11 @@ if ((*(t - 1) == ')' && (inside_paren > 0))) { t--; } - strncpy(url_buf, c, t - c); - url_buf[t - c] = 0; + g_strndup(c, t - c); tmpurlbuf = gaim_unescape_html(url_buf); g_string_append_printf(ret, "%s", tmpurlbuf, url_buf); + g_free(url_buf); g_free(tmpurlbuf); c = t; break; @@ -1556,12 +1555,12 @@ if ((*(t - 1) == ')' && (inside_paren > 0))) { t--; } - strncpy(url_buf, c, t - c); - url_buf[t - c] = 0; + url_buf = g_strndup(c, t - c); tmpurlbuf = gaim_unescape_html(url_buf); g_string_append_printf(ret, "%s", tmpurlbuf, url_buf); + g_free(url_buf); g_free(tmpurlbuf); c = t; break; @@ -1577,11 +1576,11 @@ if (badchar(*t) || badentity(t)) { if (*(t - 1) == '.') t--; - strncpy(url_buf, c, t - c); - url_buf[t - c] = 0; + url_buf = g_strndup(c, t - c); tmpurlbuf = gaim_unescape_html(url_buf); g_string_append_printf(ret, "%s", tmpurlbuf, url_buf); + g_free(url_buf); g_free(tmpurlbuf); c = t; break; @@ -1595,15 +1594,15 @@ int flag; GString *gurl_buf; const char illegal_chars[] = "!@#$%^&*()[]{}/|\\<>\":;\r\n \0"; - url_buf[0] = 0; if (strchr(illegal_chars,*(c - 1)) || strchr(illegal_chars, *(c + 1))) flag = 0; - else + else { flag = 1; + gurl_buf = g_string_new(""); + } t = c; - gurl_buf = g_string_new(""); while (flag) { /* iterate backwards grabbing the local part of an email address */ g = g_utf8_get_char(t); @@ -1631,11 +1630,13 @@ if (badchar(*t) || (g >= 127) || (*t == ')') || badentity(t)) { char *d; - strcpy(url_buf, gurl_buf->str); + url_buf = g_string_free(gurl_buf, FALSE); /* strip off trailing periods */ - for (d = url_buf + strlen(url_buf) - 1; *d == '.'; d--, t--) - *d = '\0'; + if (strlen(url_buf) > 0) { + for (d = url_buf + strlen(url_buf) - 1; *d == '.'; d--, t--) + *d = '\0'; + } tmpurlbuf = gaim_unescape_html(url_buf); if (gaim_email_is_valid(tmpurlbuf)) { @@ -1644,6 +1645,7 @@ } else { g_string_append(ret, url_buf); } + g_free(url_buf); g_free(tmpurlbuf); c = t; @@ -1653,7 +1655,6 @@ t = g_utf8_find_next_char(t, NULL); } } - g_string_free(gurl_buf, TRUE); } if(*c == ')' && !inside_html) {