diff --git a/src/common/2d/v_2ddrawer.cpp b/src/common/2d/v_2ddrawer.cpp index 1316dfa86..4de396962 100644 --- a/src/common/2d/v_2ddrawer.cpp +++ b/src/common/2d/v_2ddrawer.cpp @@ -138,7 +138,7 @@ IMPLEMENT_CLASS(DShape2D, false, false) static void Shape2D_SetTransform(DShape2D* self, DShape2DTransform *transform) { - self->transform = transform->transform; + self->transform = PARAM_NULLCHECK(transform, transform)->transform; } DEFINE_ACTION_FUNCTION_NATIVE(DShape2D, SetTransform, Shape2D_SetTransform) diff --git a/src/common/engine/printf.h b/src/common/engine/printf.h index 69d3e7d45..964d7dc85 100644 --- a/src/common/engine/printf.h +++ b/src/common/engine/printf.h @@ -75,8 +75,8 @@ enum }; -void I_Error(const char *fmt, ...) ATTRIBUTE((format(printf,1,2))); -void I_FatalError(const char* fmt, ...) ATTRIBUTE((format(printf, 1, 2))); +[[noreturn]] void I_Error(const char *fmt, ...) ATTRIBUTE((format(printf,1,2))); +[[noreturn]] void I_FatalError(const char* fmt, ...) ATTRIBUTE((format(printf, 1, 2))); // This really could need some cleanup - the main problem is that it'd create // lots of potential for merge conflicts. diff --git a/src/common/models/models_iqm.cpp b/src/common/models/models_iqm.cpp index c883dee39..679e492a2 100644 --- a/src/common/models/models_iqm.cpp +++ b/src/common/models/models_iqm.cpp @@ -593,7 +593,7 @@ const TArray IQMModel::CalculateBones(int frame1, int frame2, double i actor->boneComponentData->trsmatrix[index] = bones; - for (uint32_t j = 0; j < numbones; j++) + for (int j = 0; j < numbones; j++) { VSMatrix m; m.loadMatrix(swapYZ); diff --git a/src/common/scripting/vm/vm.h b/src/common/scripting/vm/vm.h index 980f5b1d8..1ba1a3c34 100644 --- a/src/common/scripting/vm/vm.h +++ b/src/common/scripting/vm/vm.h @@ -110,8 +110,8 @@ public: }; // This must be a separate function because the VC compiler would otherwise allocate memory on the stack for every separate instance of the exception object that may get thrown. -void ThrowAbortException(EVMAbortException reason, const char *moreinfo, ...); -void ThrowAbortException(VMScriptFunction *sfunc, VMOP *line, EVMAbortException reason, const char *moreinfo, ...); +[[noreturn]] void ThrowAbortException(EVMAbortException reason, const char *moreinfo, ...); +[[noreturn]] void ThrowAbortException(VMScriptFunction *sfunc, VMOP *line, EVMAbortException reason, const char *moreinfo, ...); void ClearGlobalVMStack(); @@ -496,6 +496,7 @@ inline int VMCallAction(VMFunction *func, VMValue *params, int numparams, VMRetu // Use these to collect the parameters in a native function. // variable name at position

+[[noreturn]] void NullParam(const char *varname); #ifndef NDEBUG diff --git a/src/common/scripting/vm/vmframe.cpp b/src/common/scripting/vm/vmframe.cpp index 8a4b87458..69b47dfd5 100644 --- a/src/common/scripting/vm/vmframe.cpp +++ b/src/common/scripting/vm/vmframe.cpp @@ -688,14 +688,14 @@ void CVMAbortException::MaybePrintMessage() } -void ThrowAbortException(EVMAbortException reason, const char *moreinfo, ...) +[[noreturn]] void ThrowAbortException(EVMAbortException reason, const char *moreinfo, ...) { va_list ap; va_start(ap, moreinfo); throw CVMAbortException(reason, moreinfo, ap); } -void ThrowAbortException(VMScriptFunction *sfunc, VMOP *line, EVMAbortException reason, const char *moreinfo, ...) +[[noreturn]] void ThrowAbortException(VMScriptFunction *sfunc, VMOP *line, EVMAbortException reason, const char *moreinfo, ...) { va_list ap; va_start(ap, moreinfo); @@ -711,10 +711,9 @@ DEFINE_ACTION_FUNCTION(DObject, ThrowAbortException) PARAM_PROLOGUE; FString s = FStringFormat(VM_ARGS_NAMES); ThrowAbortException(X_OTHER, s.GetChars()); - return 0; } -void NullParam(const char *varname) +[[noreturn]] void NullParam(const char *varname) { ThrowAbortException(X_READ_NIL, "In function parameter %s", varname); } diff --git a/src/common/utility/engineerrors.cpp b/src/common/utility/engineerrors.cpp index ccc459f72..1e2e2e82e 100644 --- a/src/common/utility/engineerrors.cpp +++ b/src/common/utility/engineerrors.cpp @@ -63,7 +63,7 @@ void I_DebugPrint(const char *cp) // //========================================================================== -void I_Error(const char *error, ...) +[[noreturn]] void I_Error(const char *error, ...) { va_list argptr; char errortext[MAX_ERRORTEXT]; @@ -85,7 +85,7 @@ void I_Error(const char *error, ...) //========================================================================== extern FILE *Logfile; -void I_FatalError(const char *error, ...) +[[noreturn]] void I_FatalError(const char *error, ...) { static bool alreadyThrown = false; gameisdead = true; diff --git a/src/common/utility/engineerrors.h b/src/common/utility/engineerrors.h index 36a755ade..18fe849bc 100644 --- a/src/common/utility/engineerrors.h +++ b/src/common/utility/engineerrors.h @@ -110,7 +110,7 @@ public: }; void I_ShowFatalError(const char *message); -void I_Error (const char *error, ...) GCCPRINTF(1,2); -void I_FatalError (const char *error, ...) GCCPRINTF(1,2); +[[noreturn]] void I_Error (const char *error, ...) GCCPRINTF(1,2); +[[noreturn]] void I_FatalError (const char *error, ...) GCCPRINTF(1,2); #endif //__ERRORS_H__