comparison src/util.c @ 7667:30593bf56e71

[gaim-migrate @ 8311] (23:56:25) shx: LSchiere: there's something wrong in my patch (23:56:34) Luke: okay (23:56:38) Luke: what's that (23:57:45) shx: I forgot to add a '0' a the end of a string (23:57:56) shx: in the gaim_mime_decode_field funcition (23:59:35) Luke: where in that? (00:00:16) shx: at the end, just before this (00:00:18) shx: if (*unencoded_start) (00:00:19) shx: n = strcpy(n, unencoded_start); (00:00:27) shx: whould be this (00:00:28) shx: *n = '\0'; (00:01:05) Luke: so you are just setting it to NULL (00:01:53) Luke: i don't understand why you need that n set at all inside that if, since you just return new on the next line down (00:03:35) shx: I doing some test right now, but I remember I added that because I had of some errors (00:05:04) Luke: i think what you may be hitting is a functional work around for not properly initializing variables, something that shouldn't work but does. because you shouldn't need to set something just before you return unless you are returning IT (or unless you are using staticly declared memory, in which case you might concievably be using that variable again when you next enter the function (00:05:55) shx: no (00:06:18) shx: n is a pointer to the end of the string, and changes as the while goes on (00:06:37) Luke: ah (00:06:42) shx: n doesn't matter (00:07:01) Luke: so should the *n = '\0' be inside the if or outside it? (00:07:30) shx: before the if (00:07:44) shx: *n = '\0'; (00:07:45) shx: if (*unencoded_start) (00:07:45) shx: n = strcpy(n, unencoded_start); (00:08:07) shx: in the case there is no *unencoded_start committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Sun, 30 Nov 2003 05:10:24 +0000
parents 0351ff7030d0
children 42e5d2f4e4b1
comparison
equal deleted inserted replaced
7666:25488bd0d461 7667:30593bf56e71
267 267
268 *n = '\0'; 268 *n = '\0';
269 269
270 if (size) 270 if (size)
271 *size = n - new; 271 *size = n - new;
272 272
273 /* Resize to take less space */ 273 /* Resize to take less space */
274 /* new = realloc(new, n - new); */ 274 /* new = realloc(new, n - new); */
275 275
276 *data = new; 276 *data = new;
277 } 277 }
292 gaim_quotedp_decode(text, &decoded, &len); 292 gaim_quotedp_decode(text, &decoded, &len);
293 else if (g_ascii_strcasecmp(encoding, "B") == 0) 293 else if (g_ascii_strcasecmp(encoding, "B") == 0)
294 gaim_base64_decode(text, &decoded, &len); 294 gaim_base64_decode(text, &decoded, &len);
295 else 295 else
296 return NULL; 296 return NULL;
297 297
298 298
299 converted = g_convert(decoded, len, OUT_CHARSET, charset, NULL, NULL, NULL); 299 converted = g_convert(decoded, len, OUT_CHARSET, charset, NULL, NULL, NULL);
300 g_free(decoded); 300 g_free(decoded);
301 301
302 return converted; 302 return converted;
303 } 303 }
321 unencoded_start = cur) 321 unencoded_start = cur)
322 { 322 {
323 int len; 323 int len;
324 char *token; 324 char *token;
325 GQueue *tokens = g_queue_new(); 325 GQueue *tokens = g_queue_new();
326 326
327 for (cur += 2, mark = cur; *cur; cur++) { 327 for (cur += 2, mark = cur; *cur; cur++) {
328 if (*cur == '?') { 328 if (*cur == '?') {
329 token = g_strndup(mark, cur - mark); 329 token = g_strndup(mark, cur - mark);
330 g_queue_push_head(tokens, token); 330 g_queue_push_head(tokens, token);
331 331
332 mark = (cur + 1); 332 mark = (cur + 1);
333 333
334 if (*mark == '=') 334 if (*mark == '=')
335 break; 335 break;
336 } else { 336 } else {
337 if ((tokens->length == 2) && (*cur == ' ')) 337 if ((tokens->length == 2) && (*cur == ' '))
338 break; 338 break;
350 n = strncpy(n, unencoded_start, len) + len; 350 n = strncpy(n, unencoded_start, len) + len;
351 351
352 charset = g_queue_pop_tail(tokens); 352 charset = g_queue_pop_tail(tokens);
353 encoding = g_queue_pop_tail(tokens); 353 encoding = g_queue_pop_tail(tokens);
354 text = g_queue_pop_tail(tokens); 354 text = g_queue_pop_tail(tokens);
355 355
356 if ((decoded = gaim_mime_decode_word(charset, encoding, text))) { 356 if ((decoded = gaim_mime_decode_word(charset, encoding, text))) {
357 len = strlen(decoded); 357 len = strlen(decoded);
358 n = strncpy(n, decoded, len) + len; 358 n = strncpy(n, decoded, len) + len;
359 g_free(decoded); 359 g_free(decoded);
360 } 360 }
361 361
362 g_free(charset); 362 g_free(charset);
363 g_free(encoding); 363 g_free(encoding);
364 g_free(text); 364 g_free(text);
365 } else { 365 } else {
366 len = cur - unencoded_start; 366 len = cur - unencoded_start;
367 n = strncpy(n, unencoded_start, len) + len; 367 n = strncpy(n, unencoded_start, len) + len;
368 368
369 while ((token = g_queue_pop_tail(tokens))) 369 while ((token = g_queue_pop_tail(tokens)))
370 g_free(token); 370 g_free(token);
371 } 371 }
372 372
373 g_queue_free(tokens); 373 g_queue_free(tokens);
374 } 374 }
375
376 *n = '\0';
375 377
376 if (*unencoded_start) 378 if (*unencoded_start)
377 n = strcpy(n, unencoded_start); 379 n = strcpy(n, unencoded_start);
378 380
379 return new; 381 return new;