# HG changeset patch # User Charles Pigott # Date 2020-06-27 08:01:31 # Node ID df42a20a274e1ff675d9b0377206cb3ff474820b # Parent acfc33244660d842df58c1088b1f323b22499d86 Codechange: Add WARN_FORMAT to vseprintf and fix the cascade of warnings that followed diff --git a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp --- a/src/3rdparty/squirrel/squirrel/sqcompiler.cpp +++ b/src/3rdparty/squirrel/squirrel/sqcompiler.cpp @@ -65,9 +65,9 @@ public: } NORETURN static void ThrowError(void *ud, const SQChar *s) { SQCompiler *c = (SQCompiler *)ud; - c->Error(s); + c->Error("%s", s); } - NORETURN void Error(const SQChar *s, ...) + NORETURN void Error(const SQChar *s, ...) WARN_FORMAT(2, 3) { static SQChar temp[256]; va_list vl; @@ -122,7 +122,7 @@ public: } Error("expected '%s'", etypename); } - Error("expected '%c'", tok); + Error("expected '%c'", (char)tok); } } SQObjectPtr ret; diff --git a/src/3rdparty/squirrel/squirrel/sqvm.cpp b/src/3rdparty/squirrel/squirrel/sqvm.cpp --- a/src/3rdparty/squirrel/squirrel/sqvm.cpp +++ b/src/3rdparty/squirrel/squirrel/sqvm.cpp @@ -94,7 +94,7 @@ bool SQVM::ARITH_OP(SQUnsignedInteger op if(!StringCat(o1, o2, trg)) return false; } else if(!ArithMetaMethod(op,o1,o2,trg)) { - Raise_Error("arith op %c on between '%s' and '%s'",op,GetTypeName(o1),GetTypeName(o2)); return false; + Raise_Error("arith op %c on between '%s' and '%s'",(char)op,GetTypeName(o1),GetTypeName(o2)); return false; } } return true; diff --git a/src/3rdparty/squirrel/squirrel/sqvm.h b/src/3rdparty/squirrel/squirrel/sqvm.h --- a/src/3rdparty/squirrel/squirrel/sqvm.h +++ b/src/3rdparty/squirrel/squirrel/sqvm.h @@ -81,7 +81,7 @@ public: SQString *PrintObjVal(const SQObject &o); - void Raise_Error(const SQChar *s, ...); + void Raise_Error(const SQChar *s, ...) WARN_FORMAT(2, 3); void Raise_Error(SQObjectPtr &desc); void Raise_IdxError(const SQObject &o); void Raise_CompareError(const SQObject &o1, const SQObject &o2); diff --git a/src/misc/str.hpp b/src/misc/str.hpp --- a/src/misc/str.hpp +++ b/src/misc/str.hpp @@ -90,7 +90,7 @@ struct CStrA : public CBlobT } /** Add formatted string (like vsprintf) at the end of existing contents. */ - int AddFormatL(const char *format, va_list args) + int AddFormatL(const char *format, va_list args) WARN_FORMAT(2, 0) { size_t addSize = max(strlen(format), 16); addSize += addSize / 2; diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -896,7 +896,7 @@ void SlObject(void *object, const SaveLo bool SlObjectMember(void *object, const SaveLoad *sld); void NORETURN SlError(StringID string, const char *extra_msg = nullptr); void NORETURN SlErrorCorrupt(const char *msg); -void NORETURN SlErrorCorruptFmt(const char *format, ...); +void NORETURN SlErrorCorruptFmt(const char *format, ...) WARN_FORMAT(1, 2); bool SaveloadCrashWithMissingNewGRFs(); diff --git a/src/script/squirrel.hpp b/src/script/squirrel.hpp --- a/src/script/squirrel.hpp +++ b/src/script/squirrel.hpp @@ -63,12 +63,12 @@ protected: /** * If a user runs 'print' inside a script, this function gets the params. */ - static void PrintFunc(HSQUIRRELVM vm, const SQChar *s, ...); + static void PrintFunc(HSQUIRRELVM vm, const SQChar *s, ...) WARN_FORMAT(2, 3); /** * If an error has to be print, this function is called. */ - static void ErrorPrintFunc(HSQUIRRELVM vm, const SQChar *s, ...); + static void ErrorPrintFunc(HSQUIRRELVM vm, const SQChar *s, ...) WARN_FORMAT(2, 3); public: Squirrel(const char *APIName); diff --git a/src/string_func.h b/src/string_func.h --- a/src/string_func.h +++ b/src/string_func.h @@ -35,7 +35,7 @@ char *strecpy(char *dst, const char *src char *stredup(const char *src, const char *last = nullptr); int CDECL seprintf(char *str, const char *last, const char *format, ...) WARN_FORMAT(3, 4); -int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap); +int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap) WARN_FORMAT(3, 0); char *CDECL str_fmt(const char *str, ...) WARN_FORMAT(1, 2);