Zero-sized destination buffers when converting to UTF-8 shouldn't overflow.
(transplanted from 12c87d886a75)
This commit is contained in:
parent
4189377d15
commit
1c8bdd8fb4
10
physfs.h
10
physfs.h
|
@ -2272,7 +2272,7 @@ __EXPORT__ void PHYSFS_enumerateFilesCallback(const char *dir,
|
|||
*
|
||||
* Strings that don't fit in the destination buffer will be truncated, but
|
||||
* will always be null-terminated and never have an incomplete UTF-8
|
||||
* sequence at the end.
|
||||
* sequence at the end. If the buffer length is 0, this function does nothing.
|
||||
*
|
||||
* \param src Null-terminated source string in UCS-4 format.
|
||||
* \param dst Buffer to store converted UTF-8 string.
|
||||
|
@ -2294,7 +2294,7 @@ __EXPORT__ void PHYSFS_utf8FromUcs4(const PHYSFS_uint32 *src, char *dst,
|
|||
*
|
||||
* Strings that don't fit in the destination buffer will be truncated, but
|
||||
* will always be null-terminated and never have an incomplete UCS-4
|
||||
* sequence at the end.
|
||||
* sequence at the end. If the buffer length is 0, this function does nothing.
|
||||
*
|
||||
* \param src Null-terminated source string in UTF-8 format.
|
||||
* \param dst Buffer to store converted UCS-4 string.
|
||||
|
@ -2317,7 +2317,7 @@ __EXPORT__ void PHYSFS_utf8ToUcs4(const char *src, PHYSFS_uint32 *dst,
|
|||
*
|
||||
* Strings that don't fit in the destination buffer will be truncated, but
|
||||
* will always be null-terminated and never have an incomplete UTF-8
|
||||
* sequence at the end.
|
||||
* sequence at the end. If the buffer length is 0, this function does nothing.
|
||||
*
|
||||
* Please note that UCS-2 is not UTF-16; we do not support the "surrogate"
|
||||
* values at this time.
|
||||
|
@ -2343,7 +2343,7 @@ __EXPORT__ void PHYSFS_utf8FromUcs2(const PHYSFS_uint16 *src, char *dst,
|
|||
*
|
||||
* Strings that don't fit in the destination buffer will be truncated, but
|
||||
* will always be null-terminated and never have an incomplete UCS-2
|
||||
* sequence at the end.
|
||||
* sequence at the end. If the buffer length is 0, this function does nothing.
|
||||
*
|
||||
* Please note that UCS-2 is not UTF-16; we do not support the "surrogate"
|
||||
* values at this time.
|
||||
|
@ -2369,7 +2369,7 @@ __EXPORT__ void PHYSFS_utf8ToUcs2(const char *src, PHYSFS_uint16 *dst,
|
|||
*
|
||||
* Strings that don't fit in the destination buffer will be truncated, but
|
||||
* will always be null-terminated and never have an incomplete UTF-8
|
||||
* sequence at the end.
|
||||
* sequence at the end. If the buffer length is 0, this function does nothing.
|
||||
*
|
||||
* Please note that we do not supply a UTF-8 to Latin1 converter, since Latin1
|
||||
* can't express most Unicode codepoints. It's a legacy encoding; you should
|
||||
|
|
|
@ -305,6 +305,7 @@ static void utf8fromcodepoint(PHYSFS_uint32 cp, char **_dst, PHYSFS_uint64 *_len
|
|||
} /* utf8fromcodepoint */
|
||||
|
||||
#define UTF8FROMTYPE(typ, src, dst, len) \
|
||||
if (len == 0) return; \
|
||||
len--; \
|
||||
while (len) \
|
||||
{ \
|
||||
|
|
Loading…
Reference in New Issue