Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Side by Side Diff: third_party/libxslt/libexslt/strings.c

Issue 1848793005: Roll libxslt to 891681e3e948f31732229f53cb6db7215f740fc7 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/libxslt/libexslt/functions.c ('k') | third_party/libxslt/libxslt.doap » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #define IN_LIBEXSLT 1 #define IN_LIBEXSLT
2 #include "libexslt/libexslt.h" 2 #include "libexslt/libexslt.h"
3 3
4 #if defined(WIN32) && !defined (__CYGWIN__) && (!__MINGW32__) 4 #if defined(WIN32) && !defined (__CYGWIN__) && (!__MINGW32__)
5 #include <win32config.h> 5 #include <win32config.h>
6 #else 6 #else
7 #include "config.h" 7 #include "config.h"
8 #endif 8 #endif
9 9
10 #include <libxml/tree.h> 10 #include <libxml/tree.h>
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 344
345 /** 345 /**
346 * exsltStrPaddingFunction: 346 * exsltStrPaddingFunction:
347 * @ctxt: an XPath parser context 347 * @ctxt: an XPath parser context
348 * @nargs: the number of arguments 348 * @nargs: the number of arguments
349 * 349 *
350 * Creates a padding string of a certain length. 350 * Creates a padding string of a certain length.
351 */ 351 */
352 static void 352 static void
353 exsltStrPaddingFunction (xmlXPathParserContextPtr ctxt, int nargs) { 353 exsltStrPaddingFunction (xmlXPathParserContextPtr ctxt, int nargs) {
354 int number, str_len = 0; 354 int number, str_len = 0, str_size = 0;
355 xmlChar *str = NULL, *ret = NULL, *tmp; 355 xmlChar *str = NULL, *ret = NULL;
356 356
357 if ((nargs < 1) || (nargs > 2)) { 357 if ((nargs < 1) || (nargs > 2)) {
358 xmlXPathSetArityError(ctxt); 358 xmlXPathSetArityError(ctxt);
359 return; 359 return;
360 } 360 }
361 361
362 if (nargs == 2) { 362 if (nargs == 2) {
363 str = xmlXPathPopString(ctxt); 363 str = xmlXPathPopString(ctxt);
364 str_len = xmlUTF8Strlen(str); 364 str_len = xmlUTF8Strlen(str);
365 str_size = xmlStrlen(str);
365 } 366 }
366 if (str_len == 0) { 367 if (str_len == 0) {
367 if (str != NULL) xmlFree(str); 368 if (str != NULL) xmlFree(str);
368 str = xmlStrdup((const xmlChar *) " "); 369 str = xmlStrdup((const xmlChar *) " ");
369 str_len = 1; 370 str_len = 1;
371 str_size = 1;
370 } 372 }
371 373
372 number = (int) xmlXPathPopNumber(ctxt); 374 number = (int) xmlXPathPopNumber(ctxt);
373 375
374 if (number <= 0) { 376 if (number <= 0) {
375 xmlXPathReturnEmptyString(ctxt); 377 xmlXPathReturnEmptyString(ctxt);
376 xmlFree(str); 378 xmlFree(str);
377 return; 379 return;
378 } 380 }
379 381
380 while (number >= str_len) { 382 while (number >= str_len) {
381 » ret = xmlStrncat(ret, str, str_len); 383 » ret = xmlStrncat(ret, str, str_size);
382 number -= str_len; 384 number -= str_len;
383 } 385 }
384 tmp = xmlUTF8Strndup (str, number); 386 if (number > 0) {
385 ret = xmlStrcat(ret, tmp); 387 » str_size = xmlUTF8Strsize(str, number);
386 if (tmp != NULL) 388 » ret = xmlStrncat(ret, str, str_size);
387 » xmlFree (tmp); 389 }
388 390
389 xmlXPathReturnString(ctxt, ret); 391 xmlXPathReturnString(ctxt, ret);
390 392
391 if (str != NULL) 393 if (str != NULL)
392 xmlFree(str); 394 xmlFree(str);
393 } 395 }
394 396
395 /** 397 /**
396 * exsltStrAlignFunction: 398 * exsltStrAlignFunction:
397 * @ctxt: an XPath parser context 399 * @ctxt: an XPath parser context
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 int right_start; 440 int right_start;
439 441
440 ret = xmlUTF8Strndup (padding, left); 442 ret = xmlUTF8Strndup (padding, left);
441 ret = xmlStrcat (ret, str); 443 ret = xmlStrcat (ret, str);
442 444
443 right_start = xmlUTF8Strsize (padding, left + str_l); 445 right_start = xmlUTF8Strsize (padding, left + str_l);
444 ret = xmlStrcat (ret, padding + right_start); 446 ret = xmlStrcat (ret, padding + right_start);
445 } else { 447 } else {
446 int str_s; 448 int str_s;
447 449
448 » str_s = xmlStrlen (str); 450 » str_s = xmlUTF8Strsize(padding, str_l);
449 ret = xmlStrdup (str); 451 ret = xmlStrdup (str);
450 ret = xmlStrcat (ret, padding + str_s); 452 ret = xmlStrcat (ret, padding + str_s);
451 } 453 }
452 } 454 }
453 455
454 xmlXPathReturnString (ctxt, ret); 456 xmlXPathReturnString (ctxt, ret);
455 457
456 xmlFree(str); 458 xmlFree(str);
457 xmlFree(padding); 459 xmlFree(padding);
458 xmlFree(alignment); 460 xmlFree(alignment);
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
831 (const xmlChar *) "padding", 833 (const xmlChar *) "padding",
832 (const xmlChar *) EXSLT_STRINGS_NAMESPACE, 834 (const xmlChar *) EXSLT_STRINGS_NAMESPACE,
833 exsltStrPaddingFunction) 835 exsltStrPaddingFunction)
834 && !xmlXPathRegisterFuncNS(ctxt, 836 && !xmlXPathRegisterFuncNS(ctxt,
835 (const xmlChar *) "align", 837 (const xmlChar *) "align",
836 (const xmlChar *) EXSLT_STRINGS_NAMESPACE, 838 (const xmlChar *) EXSLT_STRINGS_NAMESPACE,
837 exsltStrAlignFunction) 839 exsltStrAlignFunction)
838 && !xmlXPathRegisterFuncNS(ctxt, 840 && !xmlXPathRegisterFuncNS(ctxt,
839 (const xmlChar *) "concat", 841 (const xmlChar *) "concat",
840 (const xmlChar *) EXSLT_STRINGS_NAMESPACE, 842 (const xmlChar *) EXSLT_STRINGS_NAMESPACE,
841 exsltStrConcatFunction) 843 exsltStrConcatFunction)) {
842 && !xmlXPathRegisterFuncNS(ctxt,
843 (const xmlChar *) "replace",
844 (const xmlChar *) EXSLT_STRINGS_NAMESPACE,
845 exsltStrReplaceFunction)) {
846 return 0; 844 return 0;
847 } 845 }
848 return -1; 846 return -1;
849 } 847 }
OLDNEW
« no previous file with comments | « third_party/libxslt/libexslt/functions.c ('k') | third_party/libxslt/libxslt.doap » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698