Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 73371 Details for
Bug 109744
net-irc/xchat-2.4.5 crashes on room entry on sparc - ppc All messages appear in the server tab
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Debian patch that fix0rs it
44_fix_alignment_endianess.dpatch (text/plain), 8.47 KB, created by
Gustavo Zacarias (RETIRED)
on 2005-11-22 06:42:20 UTC
(
hide
)
Description:
Debian patch that fix0rs it
Filename:
MIME Type:
Creator:
Gustavo Zacarias (RETIRED)
Created:
2005-11-22 06:42:20 UTC
Size:
8.47 KB
patch
obsolete
>#! /bin/sh /usr/share/dpatch/dpatch-run >## 44_fix_alignment_endianess.dpatch by evo >## >## All lines beginning with `## DP:' are a description of the patch. >## DP: Fixed alignment and Endianess issues, doesn't affect x86. > >@DPATCH@ >diff -Naur xchat-2.4.5uno/src/common/outbound.c xchat-2.4.5/src/common/outbound.c >--- xchat-2.4.5uno/src/common/outbound.c 2005-10-01 12:32:53.000000000 +0200 >+++ xchat-2.4.5/src/common/outbound.c 2005-09-30 21:52:42.000000000 +0200 >@@ -1498,7 +1498,7 @@ > k = 0; > } else > { >- if (isdigit (buf[i]) && k < (sizeof (numb) - 1)) >+ if (isdigit ((unsigned char) buf[i]) && k < (sizeof (numb) - 1)) > { > numb[k] = buf[i]; > k++; >@@ -1899,7 +1899,7 @@ > p = name; > while (*p) > { >- hl->buf[len] = toupper (*p); >+ hl->buf[len] = toupper ((unsigned char) *p); > len++; > p++; > } >@@ -2136,7 +2136,7 @@ > > user = find_name (sess, nick); > >- if (isdigit (reason[0]) && reason[1] == 0) >+ if (isdigit ((unsigned char) reason[0]) && reason[1] == 0) > { > ban (sess, tbuf, nick, reason, (user && user->op)); > reason[0] = 0; >@@ -3287,9 +3287,9 @@ > { > if (src[0] == '%' || src[0] == '&') > { >- if (isdigit (src[1])) >+ if (isdigit ((unsigned char) src[1])) > { >- if (isdigit (src[2]) && isdigit (src[3])) >+ if (isdigit ((unsigned char) src[2]) && isdigit ((unsigned char) src[3])) > { > buf[0] = src[1]; > buf[1] = src[2]; >@@ -3442,8 +3442,8 @@ > occur++; > if ( do_ascii && > j + 3 < len && >- (isdigit (cmd[j + 1]) && isdigit (cmd[j + 2]) && >- isdigit (cmd[j + 3]))) >+ (isdigit ((unsigned char) cmd[j + 1]) && isdigit ((unsigned char) cmd[j + 2]) && >+ isdigit ((unsigned char) cmd[j + 3]))) > { > tbuf[0] = cmd[j + 1]; > tbuf[1] = cmd[j + 2]; >diff -Naur xchat-2.4.5uno/src/common/proto-irc.c xchat-2.4.5/src/common/proto-irc.c >--- xchat-2.4.5uno/src/common/proto-irc.c 2005-10-01 12:32:53.000000000 +0200 >+++ xchat-2.4.5/src/common/proto-irc.c 2005-09-30 22:31:11.000000000 +0200 >@@ -761,8 +761,12 @@ > > if (len == 4) > { >+ guint32 t; >+ >+ t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], >+ (guint8)type[3]); > /* this should compile to a bunch of: CMP.L, JE ... nice & fast */ >- switch (*((guint32 *)type)) >+ switch (t) > { > case WORDL('J','O','I','N'): > { >@@ -838,8 +842,12 @@ > > else if (len >= 5) > { >+ guint32 t; >+ >+ t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2], >+ (guint8)type[3]); > /* this should compile to a bunch of: CMP.L, JE ... nice & fast */ >- switch (*((guint32 *)type)) >+ switch (t) > { > case WORDL('I','N','V','I'): > if (ignore_check (word[1], IG_INVI)) >@@ -1022,7 +1030,7 @@ > } > > /* see if the second word is a numeric */ >- if (isdigit (word[2][0])) >+ if (isdigit ((unsigned char) word[2][0])) > { > text = word_eol[4]; > if (*text == ':') >diff -Naur xchat-2.4.5uno/src/common/url.c xchat-2.4.5/src/common/url.c >--- xchat-2.4.5uno/src/common/url.c 2005-10-01 12:32:53.000000000 +0200 >+++ xchat-2.4.5/src/common/url.c 2005-10-01 12:26:33.000000000 +0200 >@@ -124,65 +124,60 @@ > int > url_check_word (char *word, int len) > { >- char *at, *dot; >+#define D(x) (x), ((sizeof (x)) - 1) >+ static const struct { >+ const char *s; >+ int len; >+ } >+ prefix[] = { >+ { D("irc.") }, >+ { D("ftp.") }, >+ { D("www.") }, >+ { D("irc://") }, >+ { D("ftp://") }, >+ { D("http://") }, >+ { D("https://") }, >+ { D("file://") }, >+ { D("rtsp://") }, >+ { D("gopher://") }, >+ }, >+ suffix[] = { >+ { D(".org") }, >+ { D(".net") }, >+ { D(".com") }, >+ { D(".edu") }, >+ { D(".html") }, >+ { D(".info") }, >+ { D(".name") }, >+ }; >+#undef D >+ const char *at, *dot; > int i, dots; >- char temp[4]; >- guint32 pre; > >- if ((word[0] == '@' || word[0] == '+' || word[0] == '^' || word[0] == '%' || word[0] == '*' ) && word[1] == '#') >+ if (len > 1 && word[1] == '#' && strchr("@+^%*#", word[0])) > return WORD_CHANNEL; > > if ((word[0] == '#' || word[0] == '&') && word[1] != '#' && word[1] != 0) > return WORD_CHANNEL; > >- if (len > 4 && word[4] != '.') >+ for (i = 0; i < G_N_ELEMENTS(prefix); i++) > { >- temp[0] = tolower (word[0]); >- temp[1] = tolower (word[1]); >- temp[2] = tolower (word[2]); >- temp[3] = tolower (word[3]); >- >- pre = *((guint32 *)temp); >- >- if (CMPL (pre, 'i','r','c','.')) >- return WORD_URL; >- if (CMPL (pre, 'f','t','p','.')) >- return WORD_URL; >- if (CMPL (pre, 'w','w','w','.')) >- return WORD_URL; >+ int l; > >- if (len > 7 && word[4] == '/' && word[5] == '/') >+ l = prefix[i].len; >+ if (len > l) > { >- if (CMPL (pre, 'i','r','c',':')) /* irc:// */ >- return WORD_URL; >- if (CMPL (pre, 'f','t','p',':')) /* ftp:// */ >- return WORD_URL; >- } >+ int j; > >- /* check for ABCD://... */ >- if (len > 8 && word[4] == ':' && word[5] == '/' && word[6] == '/') >- { >- if (CMPL (pre, 'h','t','t','p')) /* http:// */ >- return WORD_URL; >- if (CMPL (pre, 'f','i','l','e')) /* file:// */ >- return WORD_URL; >- if (CMPL (pre, 'r','t','s','p')) /* rtsp:// */ >- return WORD_URL; >- } >- >- /* check for https:// */ >- if (len > 9 && word[5] == ':' && word[6] == '/' && word[7] == '/') >- { >- if (CMPL (pre, 'h','t','t','p') && (word[4] == 's' || word[4] == 'S')) >- return WORD_URL; >- } >- >- /* check for gopher:// */ >- if (len > 10 && word[6] == ':' && word[7] == '/' && word[8] == '/') >- { >- if (CMPL (pre, 'g','o','p','h')) >- if (CMPW (word + 4, 'e','r') || CMPW (word + 4, 'E','R')) >- return WORD_URL; >+ /* This is pretty much strncasecmp(). */ >+ for (j = 0; j < l; j++) >+ { >+ unsigned char c = word[j]; >+ if (tolower(c) != prefix[i].s[j]) >+ break; >+ } >+ if (j == l) >+ return WORD_URL; > } > } > >@@ -205,7 +200,7 @@ > { > if (word[i] == '.' && i > 1) > dots++; /* allow 127.0.0.1:80 */ >- else if (!isdigit (word[i]) && word[i] != ':') >+ else if (!isdigit ((unsigned char) word[i]) && word[i] != ':') > { > dots = 0; > break; >@@ -216,35 +211,29 @@ > > if (len > 5) > { >- /* create a lowercase version of the last 4 letters */ >- temp[0] = tolower (word[len - 4]); >- temp[1] = tolower (word[len - 3]); >- temp[2] = tolower (word[len - 2]); >- temp[3] = tolower (word[len - 1]); >+ for (i = 0; i < G_N_ELEMENTS(suffix); i++) >+ { >+ int l; > >- pre = *((guint32 *)temp); >+ l = suffix[i].len; >+ if (len > l) >+ { >+ const unsigned char *p = &word[len - l]; >+ int j; > >- if (word[len - 5] == '.') >- { >- if (CMPL (pre, 'h','t','m','l')) >- return WORD_HOST; >- if (CMPL (pre, 'i','n','f','o')) >- return WORD_HOST; >- if (CMPL (pre, 'n','a','m','e')) >- return WORD_HOST; >+ /* This is pretty much strncasecmp(). */ >+ for (j = 0; j < l; j++) >+ { >+ if (tolower(p[j]) != suffix[i].s[j]) >+ break; >+ } >+ if (j == l) >+ return WORD_HOST; >+ } > } > >- if (CMPL (pre, '.','o','r','g')) >- return WORD_HOST; >- if (CMPL (pre, '.','n','e','t')) >- return WORD_HOST; >- if (CMPL (pre, '.','c','o','m')) >- return WORD_HOST; >- if (CMPL (pre, '.','e','d','u')) >- return WORD_HOST; >- > if (word[len - 3] == '.' && >- isalpha (word[len - 2]) && isalpha (word[len - 1])) >+ isalpha ((unsigned char) word[len - 2]) && isalpha ((unsigned char) word[len - 1])) > return WORD_HOST; > } > >diff -Naur xchat-2.4.5uno/src/common/util.c xchat-2.4.5/src/common/util.c >--- xchat-2.4.5uno/src/common/util.c 2005-10-01 12:32:53.000000000 +0200 >+++ xchat-2.4.5/src/common/util.c 2005-10-01 11:49:08.000000000 +0200 >@@ -435,8 +435,8 @@ > > while (len > 0) > { >- if ((col && isdigit (*text) && nc < 2) || >- (col && *text == ',' && isdigit (*(text+1)) && nc < 3)) >+ if ((col && isdigit ((unsigned char) *text) && nc < 2) || >+ (col && *text == ',' && isdigit ((unsigned char) *(text+1)) && nc < 3)) > { > nc++; > if (*text == ',') >@@ -1084,7 +1084,7 @@ > char *p; > domain_t *dom; > >- if (!hostname || !*hostname || isdigit (hostname[strlen (hostname) - 1])) >+ if (!hostname || !*hostname || isdigit ((unsigned char) hostname[strlen (hostname) - 1])) > return _("Unknown"); > if ((p = strrchr (hostname, '.'))) > p++; >@@ -1156,7 +1156,7 @@ > if (*src != quote) *buf++ = '\\'; > } > *buf++ = *src; >- } else if (isspace(*src)) { >+ } else if (isspace((unsigned char) *src)) { > if (*argv[argc]) { > buf++, argc++; > if (argc == argvAlloced) { >diff -Naur xchat-2.4.5uno/src/fe-gtk/maingui.c xchat-2.4.5/src/fe-gtk/maingui.c >--- xchat-2.4.5uno/src/fe-gtk/maingui.c 2005-10-01 12:32:53.000000000 +0200 >+++ xchat-2.4.5/src/fe-gtk/maingui.c 2005-10-01 11:53:56.000000000 +0200 >@@ -1608,7 +1608,7 @@ > return; > > sess = current_sess; >- mode = tolower (flag[0]); >+ mode = tolower ((unsigned char) flag[0]); > > switch (mode) > {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 109744
: 73371