Always initialize variables
Наверное с каждым случалось, что при запуске релизной версии она вообще не работает. Недавно это опять произошло со мной. Следующий код ругался матом (assert-ом):
UErrorCode uError; ucnv_fromUnicode(_pConverter, &pTarget, pTargetLimit, &pSource, pSourceLimit, NULL, true, &uError); assert(U_SUCCESS(uError));
В результате была произведена модификация UErrorCode uError(U_ZERO_ERROR);
и все заработало. Но самое интересное - кусок кода библиотеки ICU:
U_CAPI void U_EXPORT2 ucnv_fromUnicode(UConverter *cnv, char **target, const char *targetLimit, const UChar **source, const UChar *sourceLimit, int32_t *offsets, UBool flush, UErrorCode *err) { UConverterFromUnicodeArgs args; const UChar *s; char *t; /* check parameters */ if(err==NULL || U_FAILURE(*err)) { return; }
Пользы никакой, а мороки прибавляет.
Итог: всегда инициализируйте переменные значениями.
PS: Во всех других местах uError
была инициализирован правильно. Случается.
0 коммент.:
Отправить комментарий