A megértés körei Binzberger Viktor Budapest Műszaki és Gazdaságtudományi Egyetem Filozófia és Tudománytörténet Tanszék
1.87-es revízió, vfprintf.c Eredeti programkód: /* Search for the end of the string, but don't search past the length specified by the precision. */ len = __strnlen (string, prec); ( common/vfprintf.c)
Az újabb verzió (1) /* Search for the end of the string, but don't search past the length (in bytes) specified by the precision. Also don't use incomplete characters. */ if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX) == 1) len = __strnlen (string, prec); else { /* In case we have a multibyte character set the situation is more complicated. We must not copy bytes at the end which form an incomplete character. */ wchar_t ignore[prec]; const char *str2 = string;
Az újabb verzió (2) mbstate_t ps; memset (&ps, '\0', sizeof (ps)); if (__mbsnrtowcs (ignore, &str2, prec, prec, &ps) == (size_t) -1) { done = -1; goto all_done; } if (str2 == NULL) len = strlen (string); else len = str2 - string - (ps.__count); }
1.87-es revízió, vfprintf.c Eredeti programkód: /* Search for the end of the string, but don't search past the length specified by the precision. */ len = __strnlen (string, prec); ( common/vfprintf.c)
__strnlen() és a hagyományos karakterláncok Hello!0 __strnlen() ???
A revízióhoz tartozó kommentár A verziókövető rendszerbe az 1.87-es revízióhoz feltöltött megjegyzés : "Correct[ed the] handling of multibyte character strings in %s format with precision."
A szoftverhiba jelensége ProgramozóFelhasználó
Egy tipikus fejlesztési ciklus