Found a better way to fix the warning from pevious commit

This commit is contained in:
Linus Dierheimer
2021-11-17 12:00:06 +01:00
parent 6c4961aaff
commit 4e818c981a
2 changed files with 1 additions and 10 deletions
-9
View File
@@ -431,16 +431,7 @@ void ffAppendFDContent(int fd, FFstrbuf* buffer)
(uint32_t) readed == free
) {
buffer->length += readed;
//GCC is complaining about a possible write to an array of length zero.
//It believes (buffer->allocated * 2) - 1) can be zero. | This is done in ffStrbufEnsureCapacity.
//This would happen when buffer->allocated is zero: 0 * 2 = 0; 0 - 1 = UINT32_MAX; UINT32_MAX + 1 = 0;
//However, this can never be true, because of our ffStrbufEnsureFree call above.
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstringop-overflow"
ffStrbufEnsureCapacity(buffer, (buffer->allocated * 2) - 1); // -1 for null terminator
#pragma GCC diagnostic pop
free = ffStrbufGetFree(buffer);
}
+1 -1
View File
@@ -101,7 +101,7 @@ static void setCapacity(FFstrbuf* strbuf, uint32_t capacity)
void ffStrbufEnsureCapacity(FFstrbuf* strbuf, uint32_t capacity)
{
if(strbuf->allocated > capacity)
if(strbuf->allocated > capacity || capacity == 0)
return;
setCapacity(strbuf, capacity + 1); // + 1 for the null byte