summaryrefslogtreecommitdiff
path: root/innobase/ut
diff options
context:
space:
mode:
authorheikki@hundin.mysql.fi <>2002-08-11 18:49:47 +0300
committerheikki@hundin.mysql.fi <>2002-08-11 18:49:47 +0300
commitbee3f072e40dbdd40b45de1988309fb4bb9f6546 (patch)
treed3f55dcc192a55ccc266a48e322be71aae0673af /innobase/ut
parent0005f28b4ec6fdc73c83ea430f53f74103b26239 (diff)
downloadmariadb-git-bee3f072e40dbdd40b45de1988309fb4bb9f6546.tar.gz
ha_innobase.cc, ut0ut.c, univ.i, ut0ut.h:
Redefine sprintf as ut_sprintf inside InnoDB code; some old Unixes may have a pointer as the return type of sprintf lock0lock.c: Add safety against buffer overruns in latest deadlock info srv0srv.c: Add safety against buffer overruns in SHOW INNODB STATUS os0thread.h, os0thread.c: Fix a portability bug introduced in Windows when we changed os_thread_id_t to be the same as os_thread_t
Diffstat (limited to 'innobase/ut')
-rw-r--r--innobase/ut/ut0ut.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/innobase/ut/ut0ut.c b/innobase/ut/ut0ut.c
index 6a5f273e731..2274e723be9 100644
--- a/innobase/ut/ut0ut.c
+++ b/innobase/ut/ut0ut.c
@@ -12,11 +12,36 @@ Created 5/11/1994 Heikki Tuuri
#include "ut0ut.ic"
#endif
+#include <stdarg.h>
+
#include "ut0sort.h"
ibool ut_always_false = FALSE;
/************************************************************
+Uses vsprintf to emulate sprintf so that the function always returns
+the printed length. Apparently in some old SCO Unixes sprintf did not
+return the printed length but a pointer to the end of the printed string. */
+
+ulint
+ut_sprintf(
+/*=======*/
+ char* buf, /* in/out: buffer where to print */
+ const char* format, /* in: format of prints */
+ ...) /* in: arguments to be printed */
+{
+ va_list args;
+
+ va_start(args, format);
+
+ vsprintf(buf, format, args);
+
+ va_end(args);
+
+ return((ulint)strlen(buf));
+}
+
+/************************************************************
Gets the high 32 bits in a ulint. That is makes a shift >> 32,
but since there seem to be compiler bugs in both gcc and Visual C++,
we do this by a special conversion. */