changeset 9064:290a7213f9e4

[gaim-migrate @ 9840] wing says this will fix some kind of blank yahoo mail notification bug. I don't use Yahoo mail, so I encourge people who do to test this, just in case. committer: Tailor Script <tailor@pidgin.im>
author Tim Ringenbach <marv@pidgin.im>
date Tue, 25 May 2004 23:12:14 +0000
parents 350c6845c792
children 23547b9f8cec
files src/protocols/yahoo/yahoo.c
diffstat 1 files changed, 23 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/protocols/yahoo/yahoo.c	Tue May 25 22:51:02 2004 +0000
+++ b/src/protocols/yahoo/yahoo.c	Tue May 25 23:12:14 2004 +0000
@@ -911,10 +911,29 @@
 
 	for (p = text; p < end; p++, n++) {
 		if (*p == '\\') {
-			k = 0;
-			sscanf(p + 1, "%3o%n\n", &i, &k);
-			*n = i;
-			p += k;
+			if (p[1] >= '0' && p[1] <= '7') {
+				p += 1;
+				for (i = 0, k = 0; k < 3; k += 1) {
+					char c = p[k];
+				if (c < '0' || c > '7') break;
+					i *= 8;
+					i += c - '0';
+				}
+				*n = i;
+				p += k - 1;
+			} else { /* bug 959248 */
+				/* If we see a \ not followed by an octal number,
+				 * it means that it is actually a \\ with one \
+				 * already eaten by some unknown function.
+				 * This is arguably broken.
+				 *
+				 * I think wing is wrong here, there is no function
+				 * called that I see that could have done it. I guess
+				 * it is just really sending single \'s. That's yahoo
+				 * for you.
+				 */
+				*n = *p;
+			}
 		}
 		else
 			*n = *p;