Skip to content

Commit

Permalink
Cherry-pick 275926@main (65fd9be). https://bugs.webkit.org/show_bug.c…
Browse files Browse the repository at this point in the history
…gi?id=270769

    [JSC][Clang] DatePrototype.cpp(337,29): error: 'snprintf' will always be truncated; specified size is 28, but format string expands to at least 29 [-Werror,-Wformat-truncation]
    https://bugs.webkit.org/show_bug.cgi?id=270769

    Reviewed by Don Olmstead.

    Clang 18 reports a false warning:

    > JavaScriptCore/runtime/DatePrototype.cpp(337,29): error: 'snprintf' will always be truncated; specified size is 28, but format string expands to at least 29 [-Werror,-Wformat-truncation]

    This problem is tracked by <llvm/llvm-project#71320>.

    * Source/JavaScriptCore/runtime/DatePrototype.cpp:
    Ignore the warning for Clang.

    Canonical link: https://commits.webkit.org/275926@main

Canonical link: https://commits.webkit.org/274313.90@webkitglib/2.44
  • Loading branch information
fujii authored and mcatanzaro committed Mar 15, 2024
1 parent b67becf commit 76f4db1
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions Source/JavaScriptCore/runtime/DatePrototype.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -333,9 +333,11 @@ JSC_DEFINE_HOST_FUNCTION(dateProtoFuncToISOString, (JSGlobalObject* globalObject
ms += msPerSecond;

int charactersWritten;
if (gregorianDateTime->year() > 9999 || gregorianDateTime->year() < 0)
if (gregorianDateTime->year() > 9999 || gregorianDateTime->year() < 0) {
IGNORE_CLANG_WARNINGS_BEGIN("format-truncation"); // for Clang 18
charactersWritten = snprintf(buffer, sizeof(buffer), "%+07d-%02d-%02dT%02d:%02d:%02d.%03dZ", gregorianDateTime->year(), gregorianDateTime->month() + 1, gregorianDateTime->monthDay(), gregorianDateTime->hour(), gregorianDateTime->minute(), gregorianDateTime->second(), ms);
else
IGNORE_CLANG_WARNINGS_END;
} else
charactersWritten = snprintf(buffer, sizeof(buffer), "%04d-%02d-%02dT%02d:%02d:%02d.%03dZ", gregorianDateTime->year(), gregorianDateTime->month() + 1, gregorianDateTime->monthDay(), gregorianDateTime->hour(), gregorianDateTime->minute(), gregorianDateTime->second(), ms);

ASSERT(charactersWritten > 0 && static_cast<unsigned>(charactersWritten) < sizeof(buffer));
Expand Down

0 comments on commit 76f4db1

Please sign in to comment.