#define PRINT_ASCIIDOC_LOG(fmt) if (ASCIIDOC_FLAG) printf(fmt)
+#define INT_ADD_RANGE_OVERFLOW(a, b) \
+ ((b) < 0 \
+ ? (a) < INT_MIN - (b) \
+ : INT_MAX - (b) < (a))
+
const char *default_locale = I18N_ULOCALE_UK;
}
PRINT_ASCIIDOC_LOG("|===\n");
+ free(f_narrow);
+ free(f_short);
+ free(f_long);
+ free(s_narrow);
+ free(s_short);
+ free(s_long);
+
return 0;
}
int value_length = snprintf(NULL, 0, "%g", value);
if (value_length > max_value_length)
max_value_length = value_length;
- output_length += value_length;
+ if (!INT_ADD_RANGE_OVERFLOW(output_length, value_length))
+ output_length += value_length;
} else {
- output_length += 1;
+ if (!INT_ADD_RANGE_OVERFLOW(output_length, 1))
+ output_length += 1;
}
}
/* +1 NULL terminator */
- max_value_length += 1;
+ if (!INT_ADD_RANGE_OVERFLOW(max_value_length, 1))
+ max_value_length += 1;
i18n_uchar *output = (i18n_uchar *) malloc((output_length + 1) * sizeof(input[0]));
i18n_ustring_mem_set(output, '\0', output_length + 1);
printf("\n****************************************");
printf("\n - locales : %s\n", default_locale);
ret = __get_language_info();
- }
- if (ret == -1) {
- printf("get i18n language info list failed\n");
+ if (ret == -1) {
+ printf("get i18n language info list failed\n");
+ }
}
} else {
default_locale = locale;
printf("\n****************************************");
printf("\n - locales : %s\n", default_locale);
ret = __get_date_basic_format();
- }
- if (ret == -1) {
- printf("get i18n date and time basic format list failed\n");
+ if (ret == -1) {
+ printf("get i18n date and time basic format list failed\n");
+ }
}
} else {
default_locale = locale;
printf("\n****************************************");
printf("\n - locales : %s\n", default_locale);
ret = __get_date_and_time(input);
- }
- if (ret == -1) {
- printf("get i18n date and time list failed\n");
+ if (ret == -1) {
+ printf("get i18n date and time list failed\n");
+ }
}
} else {
default_locale = locale;
printf("\n****************************************");
printf("\n - locales : %s\n", default_locale);
ret = __get_number_format(input);
- }
- if (ret == -1) {
- printf("get number format list failed\n");
+ if (ret == -1) {
+ printf("get number format list failed\n");
+ }
}
} else {
default_locale = locale;
printf("\n****************************************");
printf("\n - locales : %s\n", default_locale);
ret = __get_symbol();
- }
- if (ret == -1) {
- printf("get i18n symbol list failed\n");
+ if (ret == -1) {
+ printf("get i18n symbol list failed\n");
+ }
}
} else {
default_locale = locale;