39 {
40 va_list args;
42 char *msgptr = msg;
43
44 if (caller != nullptr)
45
46 msgptr += sprintf (msgptr, "%s:", caller);
47
48 msgptr += sprintf (msgptr, "Error:%s", message);
49 if (format != nullptr) {
50 msgptr += sprintf (msgptr, ":");
51 va_start(args, format);
52 #ifdef _WIN32
53
54 msgptr += _vsnprintf (msgptr,
MAX_MSG - 2 - (msgptr - msg), format, args);
56 strcat (msg, "\n");
57 #else
58
59 msgptr += vsprintf (msgptr, format, args);
60
61 msgptr += sprintf (msgptr, "\n");
62 #endif
63 va_end(args);
64 }
65 else
66
67 msgptr += sprintf (msgptr, "\n");
68
69
70 fprintf(stderr, "%s", msg);
71
72 switch (action) {
75 return;
78#if !defined(NDEBUG)
79
80
81
82#if defined(__GNUC__)
83 __builtin_trap();
84#else
85 *reinterpret_cast<int*>(0) = 0;
86#endif
87#endif
88 abort();
89 default:
91 }
92}
constexpr ERRCODE BADERRACTION("Illegal error action")
void error(const char *caller, TessErrorLogCode action, const char *format,...) const