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

astitcher pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git

commit 0c240d12a2ceca3e361a4c6efce86a984c316927
Author: Andrew Stitcher <[email protected]>
AuthorDate: Wed Jun 29 13:25:43 2022 +0100

    PROTON-2562: Finish using fixed size buffers for logging output
    
    Remove the scratch pn_string_t member of the logger as this is no longer
    needed.
---
 c/src/core/logger.c         | 17 ++++++++++-------
 c/src/core/logger_private.h |  1 -
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/c/src/core/logger.c b/c/src/core/logger.c
index e0b7e2fea..7e429b349 100644
--- a/c/src/core/logger.c
+++ b/c/src/core/logger.c
@@ -48,13 +48,10 @@ void pni_logger_init(pn_logger_t *logger)
 {
   *logger = the_default_logger;
   logger->sink_context = (intptr_t) logger;
-  logger->scratch = pn_string(NULL);
 }
 
 void pni_logger_fini(pn_logger_t *logger)
 {
-  pn_free(logger->scratch);
-  logger->scratch = NULL;
 }
 
 #define LOGLEVEL(x)   {sizeof(#x)-1, #x, PN_LEVEL_ ## x, PN_LEVEL_ ## x-1}
@@ -118,7 +115,6 @@ void pni_init_default_logger(void)
 
   the_default_logger.sev_mask = (pn_log_level_t) (the_default_logger.sev_mask 
| sev_mask);
   the_default_logger.sub_mask = (pn_log_subsystem_t) 
(the_default_logger.sub_mask | sub_mask);
-  the_default_logger.scratch = pn_string(NULL);
 }
 
 void pni_fini_default_logger(void)
@@ -229,12 +225,16 @@ void pni_logger_log_raw(pn_logger_t *logger, 
pn_log_subsystem_t subsystem, pn_lo
 
 void pni_logger_log_msg_inspect(pn_logger_t *logger, pn_log_subsystem_t 
subsystem, pn_log_level_t severity, void* object, const char *fmt, ...) {
   va_list ap;
+  char buf[1024];
+  pn_fixed_string_t out = pn_fixed_string(buf, sizeof(buf));
 
   va_start(ap, fmt);
-  pn_string_vformat(logger->scratch, fmt, ap);
+  pn_fixed_string_vaddf(&out, fmt, ap);
   va_end(ap);
-  pn_inspect(object, logger->scratch);
-  pni_logger_log(logger, subsystem, severity, pn_string_get(logger->scratch));
+
+  pn_finspect(object, &out);
+  pn_fixed_string_terminate(&out);
+  pni_logger_log(logger, subsystem, severity, buf);
 }
 
 void pni_logger_log_msg_frame(pn_logger_t *logger, pn_log_subsystem_t 
subsystem, pn_log_level_t severity, pn_bytes_t frame, const char *fmt, ...) {
@@ -245,6 +245,7 @@ void pni_logger_log_msg_frame(pn_logger_t *logger, 
pn_log_subsystem_t subsystem,
   va_start(ap, fmt);
   pn_fixed_string_vaddf(&output, fmt, ap);
   va_end(ap);
+
   size_t psize = pni_value_dump(frame, &output);
   pn_bytes_t payload = {.size=frame.size-psize, .start=frame.start+psize};
   if (payload.size>0) {
@@ -257,6 +258,7 @@ void pni_logger_log_msg_frame(pn_logger_t *logger, 
pn_log_subsystem_t subsystem,
     output.position -= sizeof(truncated);
     pn_fixed_string_append(&output, pn_string_const(truncated, 
sizeof(truncated)));
   }
+  pn_fixed_string_terminate(&output);
   pni_logger_log(logger, subsystem, severity, buf);
 }
 
@@ -278,6 +280,7 @@ void pni_logger_vlogf(pn_logger_t *logger, 
pn_log_subsystem_t subsystem, pn_log_
     output.position -= sizeof(truncated);
     pn_fixed_string_append(&output, pn_string_const(truncated, 
sizeof(truncated)));
   }
+  pn_fixed_string_terminate(&output);
   pni_logger_log(logger, subsystem, severity, buf);
 }
 
diff --git a/c/src/core/logger_private.h b/c/src/core/logger_private.h
index 78276356e..27625993c 100644
--- a/c/src/core/logger_private.h
+++ b/c/src/core/logger_private.h
@@ -30,7 +30,6 @@ extern "C" {
 struct pn_logger_t {
     pn_log_sink_t sink;
     intptr_t      sink_context;
-    pn_string_t  *scratch;
     uint16_t      sub_mask;
     uint16_t      sev_mask;
 };


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to