@@ -96,42 +96,27 @@ namespace CLEO
9696 return (CLEO_GetConfigInt (" StrictValidation" , 0 ) == 1 ) && !IsLegacyScript (script);
9797 }
9898
99- static std::string StringPrintf (const char * format, ... )
99+ static std::string StringPrintfV (const char * format, va_list args )
100100 {
101- va_list args;
102-
103- va_start (args, format);
104101 auto len = std::vsnprintf (nullptr , 0 , format, args);
105- va_end (args);
106102
107103 if (len <= 0 ) return {}; // empty or encoding error
108104
109105 std::string result;
110106 result.resize (len);
111107
112- va_start (args, format);
113108 std::vsnprintf (result.data (), result.length () + 1 , format, args);
114- va_end (args);
115109
116110 return std::move (result);
117111 }
118112
119- static void StringAppendPrintf ( std::string& dest, const char * format, ...)
113+ static std::string StringPrintf ( const char * format, ...)
120114 {
121115 va_list args;
122-
123116 va_start (args, format);
124- auto len = std::vsnprintf (nullptr , 0 , format, args);
125- va_end (args);
126-
127- if (len <= 0 ) return ; // empty or encoding error
128-
129- size_t oriSize = dest.size ();
130- dest.resize (dest.size () + len);
131-
132- va_start (args, format);
133- std::vsnprintf (dest.data () + oriSize, len + 1 , format, args);
117+ auto result = StringPrintfV (format, args);
134118 va_end (args);
119+ return result;
135120 }
136121
137122 static void StringAppendNum (std::string& dest, int number, int padLen = 0 )
@@ -574,6 +559,30 @@ namespace CLEO
574559 }
575560 }
576561
562+ static void ShowErrorSuspend (const std::string& scriptInfo, const char * format, ...)
563+ {
564+ va_list args;
565+ va_start (args, format);
566+ auto msg = StringPrintfV (format, args);
567+ va_end (args);
568+
569+ ShowError (" %s in script %s\n Script suspended." , msg.c_str (), scriptInfo.c_str ());
570+ }
571+
572+ static void ShowErrorSuspendCompat (const std::string& scriptInfo, const char * format, ...)
573+ {
574+ va_list args;
575+ va_start (args, format);
576+ auto msg = StringPrintfV (format, args);
577+ va_end (args);
578+
579+ ShowError (
580+ " %s in script %s\n Script suspended."
581+ " \n\n This error can be ignored in legacy mode by changing script extension to '.cs4'" ,
582+ msg.c_str (), scriptInfo.c_str ()
583+ );
584+ }
585+
577586 static bool PluginCheckCleoVersion ()
578587 {
579588 auto ver = CLEO_GetVersion ();
@@ -685,24 +694,17 @@ namespace CLEO
685694 CLEO::ShowError (a, __VA_ARGS__); \
686695 }
687696
688- #define SHOW_ERROR_COMPAT (a, ...) \
689- { \
690- CLEO::ShowError ( \
691- a " \n\n This error can be ignored in legacy mode by changing script extension to '.cs4'" , __VA_ARGS__ \
692- ); \
693- }
694-
695- #define SUSPEND (a, ...) \
697+ #define SUSPEND (...) \
696698 { \
697- SHOW_ERROR (a " in script %s \n Script suspended. " , __VA_ARGS__, ScriptInfoStr (thread). c_str ()); \
699+ CLEO::ShowErrorSuspend ( ScriptInfoStr (thread), __VA_ARGS__); \
698700 return thread->Suspend (); \
699701 }
700702
701- #define SUSPEND_COMPAT (a, ...) \
703+ #define SUSPEND_COMPAT (...) \
702704 { \
703705 if (IsStrictValidation (thread)) \
704706 { \
705- SHOW_ERROR_COMPAT (a " in script %s \n Script suspended. " , __VA_ARGS__, ScriptInfoStr (thread). c_str ()); \
707+ CLEO::ShowErrorSuspendCompat ( ScriptInfoStr (thread), __VA_ARGS__); \
706708 return thread->Suspend (); \
707709 } \
708710 }
@@ -1075,15 +1077,15 @@ namespace CLEO
10751077 char * _varName##Ok = CLEO_ReadParamsFormatted(thread, _buff_format_##_varName, _varName, sizeof (_varName)); \
10761078 if (_varName##Ok == nullptr ) \
10771079 { \
1078- SUSPEND (" Invalid formatted string" , " " ); \
1080+ SUSPEND (" Invalid formatted string" ); \
10791081 }
10801082
10811083#define OPCODE_READ_PARAMS_FORMATTED (_format, _varName ) \
10821084 char _varName[2 * MAX_STR_LEN + 1 ]; \
10831085 char * _varName##Ok = CLEO_ReadParamsFormatted(thread, _format, _varName, sizeof (_varName)); \
10841086 if (_varName##Ok == nullptr ) \
10851087 { \
1086- SUSPEND (" Invalid formatted string" , " " ); \
1088+ SUSPEND (" Invalid formatted string" ); \
10871089 }
10881090
10891091#define OPCODE_READ_PARAM_FILEPATH (_varName ) \
0 commit comments