Dnia 2011-10-29, sob o godzinie 02:35 +0200, Bartosz Brachaczek pisze: > W załączonych łatkach moim zdaniem są błędy off-by-one, podobnie > zresztą jak jest w aktualnym kodzie libgadu. Przypadek res == size > oznacza, że wszystkie znaki poza nullem zostały zapisane i > implementacje niezgodne z C99, w szczególności MSVC, mogą takie coś > zwrócić. Natomiast przypadek res == size - 1 oznacza, że wszystko > idealnie się zmieściło.
Nie mogę znaleźć res == size w aktualnym kodzie. Faktycznie, jest błąd polegający na tym, że jeśli mamy idealnie dopasowany bufor, to go powiększy jeszcze raz, ale to chyba nie jest krytyczny błąd? Poza tym, nie wiem czy można sobie spokojnie kopiować va_list jeśli nie ma va_copy(). Sam to wymyśliłeś, czy wzorowałeś się na czymś? > Ponadto w pętli dla nie-C99 brakowało > dodatkowych va_copy(). Kolejny problem to brak implementacji va_copy() > dla MSVC. Tyle że va_copy() pojawiło się oficjalnie w C99. Wydaje mi się, że jeśli na danej platformie jest vsnprintf() zgodne z C99, ale <stdarg.h> już nie, to ma dużo większe problemy niż libgadu ;) Pozdr, Wojtek _______________________________________________ libgadu-devel mailing list libgadu-devel@lists.ziew.org http://lists.ziew.org/mailman/listinfo/libgadu-devel