From: Florian Krohm Date: Fri, 26 Dec 2025 20:24:50 +0000 (+0000) Subject: VEX: Add function vex_vsprintf. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f0baae48d17f1d9d5236a8e9a7609d01518f90ee;p=thirdparty%2Fvalgrind.git VEX: Add function vex_vsprintf. Small pre-patch for objdump-based disassembly. Part of fixing https://bugs.kde.org/show_bug.cgi?id=510840 --- diff --git a/VEX/priv/main_util.c b/VEX/priv/main_util.c index 8d99eab83..3d7ccb168 100644 --- a/VEX/priv/main_util.c +++ b/VEX/priv/main_util.c @@ -258,10 +258,6 @@ void vpanic ( const HChar* str ) /*--- vex_printf ---*/ /*---------------------------------------------------------*/ -/* This should be the only <...> include in the entire VEX library. - New code for vex_util.c should go above this point. */ -#include - SizeT vex_strlen ( const HChar* str ) { SizeT i = 0; @@ -609,18 +605,25 @@ static void add_to_vg_sprintf_buf ( HChar c ) *vg_sprintf_ptr++ = c; } -UInt vex_sprintf ( HChar* buf, const HChar *format, ... ) +UInt vex_vsprintf ( HChar* buf, const HChar* format, va_list vargs ) { - Int ret; - va_list vargs; + UInt ret; vg_sprintf_ptr = buf; + ret = vprintf_wrk(add_to_vg_sprintf_buf, format, vargs); + add_to_vg_sprintf_buf('\0'); - va_start(vargs,format); + vassert(vex_strlen(buf) == ret); + return ret; +} - ret = vprintf_wrk ( add_to_vg_sprintf_buf, format, vargs ); - add_to_vg_sprintf_buf(0); +UInt vex_sprintf ( HChar* buf, const HChar *format, ... ) +{ + UInt ret; + va_list vargs; + va_start(vargs,format); + ret = vex_vsprintf(buf, format, vargs); va_end(vargs); vassert(vex_strlen(buf) == ret); diff --git a/VEX/priv/main_util.h b/VEX/priv/main_util.h index 4abae5440..9d278305f 100644 --- a/VEX/priv/main_util.h +++ b/VEX/priv/main_util.h @@ -34,6 +34,9 @@ #ifndef __VEX_MAIN_UTIL_H #define __VEX_MAIN_UTIL_H +/* This should be the only <...> include in the entire VEX library. */ +#include + #include "libvex_basictypes.h" #include "libvex_inner.h" @@ -92,6 +95,9 @@ extern UInt vex_printf ( const HChar *format, ... ); __attribute__ ((format (printf, 2, 3))) extern UInt vex_sprintf ( HChar* buf, const HChar *format, ... ); +__attribute__ ((format (printf, 2, 0))) +extern UInt vex_vsprintf ( HChar* buf, const HChar* format, va_list vargs ); + /* String ops */