ObjFW  Diff

Differences From Artifact [04c9933717]:

To Artifact [0f7da4996c]:


350
351
352
353
354
355
356



357
358
359
360
361
362
363
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366







+
+
+







}

static bool
formatConversionSpecifierState(struct context *ctx)
{
	char *tmp = NULL;
	int tmpLen = 0;
#ifndef HAVE_ASPRINTF_L
	OFString *point;
#endif

	if (!appendSubformat(ctx, ctx->format + ctx->i, 1))
		return false;

	switch (ctx->format[ctx->i]) {
	case '@':
		if (ctx->lengthModifier != LENGTH_MODIFIER_NONE)
549
550
551
552
553
554
555


556

557
558
559
560
561
562
563
564
565
566
567
568



569
570

571
572
573
574
575
576
577
552
553
554
555
556
557
558
559
560

561
562
563
564
565
566
567
568





569
570
571
572
573
574
575
576
577
578
579
580
581







+
+
-
+







-
-
-
-
-
+
+
+


+








#ifndef HAVE_ASPRINTF_L
		/*
		 * If there's no asprintf_l, we have no other choice than to
		 * use this ugly hack to replace the locale's decimal point
		 * back to ".".
		 */
		point = [OFLocale decimalPoint];

		if (!ctx->useLocale) {
		if (!ctx->useLocale && point != nil && ![point isEqual: @"."]) {
			void *pool = objc_autoreleasePoolPush();
			char *tmp2;

			@try {
				OFMutableString *tmpStr = [OFMutableString
				    stringWithUTF8String: tmp
						  length: tmpLen];
				OFString *point = [OFLocale decimalPoint];
				if (point != nil)
					[tmpStr
					    replaceOccurrencesOfString: point
							    withString: @"."];
				[tmpStr replaceOccurrencesOfString: point
							withString: @"."];

				if (tmpStr.UTF8StringLength > INT_MAX)
					return false;

				tmpLen = (int)tmpStr.UTF8StringLength;
				tmp2 = malloc(tmpLen);
				memcpy(tmp2, tmpStr.UTF8String, tmpLen);
			} @finally {
				free(tmp);
				objc_autoreleasePoolPop(pool);
			}