This is an automated email from the ASF dual-hosted git repository.

pnoltes pushed a commit to branch 
feature/array_list_return_status_on_modification
in repository https://gitbox.apache.org/repos/asf/celix.git

commit fae2eb4dfd28b7f7bc99ee64c25283538d978db1
Author: Pepijn Noltes <pepijnnol...@gmail.com>
AuthorDate: Mon May 1 19:22:57 2023 +0200

    Update aspritnf_ei to include vasprintf
---
 libs/error_injector/asprintf/CMakeLists.txt        |  4 +++-
 libs/error_injector/asprintf/include/asprintf_ei.h |  2 ++
 libs/error_injector/asprintf/src/asprintf_ei.cc    | 11 ++++++++++-
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/libs/error_injector/asprintf/CMakeLists.txt 
b/libs/error_injector/asprintf/CMakeLists.txt
index ae4a711e..9a82cd0f 100644
--- a/libs/error_injector/asprintf/CMakeLists.txt
+++ b/libs/error_injector/asprintf/CMakeLists.txt
@@ -20,5 +20,7 @@ add_library(asprintf_ei STATIC src/asprintf_ei.cc)
 target_include_directories(asprintf_ei PUBLIC 
${CMAKE_CURRENT_LIST_DIR}/include)
 target_link_libraries(asprintf_ei PUBLIC Celix::error_injector)
 # It plays nicely with address sanitizer this way.
-target_link_options(asprintf_ei INTERFACE LINKER:--wrap,asprintf)
+target_link_options(asprintf_ei INTERFACE
+        LINKER:--wrap,vasprintf
+        LINKER:--wrap,asprintf)
 add_library(Celix::asprintf_ei ALIAS asprintf_ei)
diff --git a/libs/error_injector/asprintf/include/asprintf_ei.h 
b/libs/error_injector/asprintf/include/asprintf_ei.h
index 2c240b4b..63b56bcf 100644
--- a/libs/error_injector/asprintf/include/asprintf_ei.h
+++ b/libs/error_injector/asprintf/include/asprintf_ei.h
@@ -27,6 +27,8 @@ extern "C" {
 
 CELIX_EI_DECLARE(asprintf, int);
 
+CELIX_EI_DECLARE(vasprintf, int);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/libs/error_injector/asprintf/src/asprintf_ei.cc 
b/libs/error_injector/asprintf/src/asprintf_ei.cc
index 3a235091..1a3a2465 100644
--- a/libs/error_injector/asprintf/src/asprintf_ei.cc
+++ b/libs/error_injector/asprintf/src/asprintf_ei.cc
@@ -24,6 +24,15 @@
 
 extern "C" {
 
+int __real_vasprintf(char** buf, const char* format, va_list args);
+CELIX_EI_DEFINE(vasprintf, int)
+int __wrap_vasprintf(char** buf, const char* format, va_list args) {
+    errno = ENOMEM;
+    CELIX_EI_IMPL(vasprintf);
+    errno = 0;
+    return __real_vasprintf(buf, format, args);
+}
+
 int __real_asprintf(char** buf, const char* format, ...);
 CELIX_EI_DEFINE(asprintf, int)
 int __wrap_asprintf(char** buf, const char* format, ...) {
@@ -32,7 +41,7 @@ int __wrap_asprintf(char** buf, const char* format, ...) {
     errno = 0;
     va_list args;
     va_start(args, format);
-    int rc = vasprintf(buf, format, args);
+    int rc = __real_vasprintf(buf, format, args);
     va_end(args);
     return rc;
 }

Reply via email to