return;
}
-#ifdef STATIC_ANALYZER
- buffer[0] = '\0';
+#ifndef NDEBUG
+ memset(buffer, 0x42, sizeof(buffer));
#endif
fr_sbuff_init_out(&sbuff, buffer, sizeof(buffer));
fr_sbuff_marker(&m_start, &sbuff);
fr_sbuff_marker(&m_end, &sbuff);
-#ifndef NDEBUG
- memset(buffer, 0x42, sizeof(buffer));
-#endif
-
for (;;) {
ssize_t slen;
fr_sbuff_t sbuff;
char buffer[1024];
-#ifdef STATIC_ANALYZER
- buffer[0] = '\0';
-#endif
-
fr_sbuff_init_out(&sbuff, buffer, sizeof(buffer));
fr_pair_list_log_sbuff(log, lvl, parent, list, file, line, &sbuff);
fr_sbuff_t sbuff;
char buffer[1024];
-#ifdef STATIC_ANALYZER
- buffer[0] = '\0';
-#endif
-
fr_sbuff_init_out(&sbuff, buffer, sizeof(buffer));
(void) fr_pair_print(&sbuff, NULL, pair);
*sbuff->p = '\0';
}
-static inline void _fr_sbuff_init(fr_sbuff_t *out, char const *start, char const *end, bool is_const, bool nul_term)
+static inline void _fr_sbuff_init(fr_sbuff_t *out, char const *start, char const *end, bool is_const)
{
- if (unlikely(end < start)) end = start; /* Could be an assert? */
+ if (unlikely(end < start)) end = start; /* Could be an assert? */
*out = (fr_sbuff_t){
.buff_i = start,
.end_i = end,
.is_const = is_const
};
-
- if (nul_term) *out->start = '\0';
}
/*
* Will \0 terminate the output buffer.
*
* @param[out] _out Pointer to buffer.
- * @param[in] _start Start of the buffer.
+ * @param[in] _start Start of the buffer. Cannot be const.
* @param[in] _len_or_end Either an end pointer or the length
- * of the buffer.
+ * of the buffer. 'end' can be const.
*/
#define fr_sbuff_init_out(_out, _start, _len_or_end) \
-_fr_sbuff_init(_out, _start, \
-_Generic((_len_or_end), \
+do { \
+ *(_start) = '\0'; \
+ _fr_sbuff_init(_out, _start, \
+ _Generic((_len_or_end), \
size_t : (char const *)(_start) + ((size_t)(_len_or_end) - 1), \
long : (char const *)(_start) + ((size_t)(_len_or_end) - 1), \
int : (char const *)(_start) + ((size_t)(_len_or_end) - 1), \
- char * : (char const *)(_len_or_end), \
- char const * : (char const *)(_len_or_end) \
-), \
-IS_CONST(char *, _start), true)
+ char * : (char const *)(_len_or_end) \
+ ), \
+ false); \
+} while (0)
#if defined(__GNUC__) && __GNUC__ >= 11
DIAG_ON(maybe-uninitialized)
char * : (char const *)(_len_or_end), \
char const * : (char const *)(_len_or_end) \
), \
-IS_CONST(char *, _start), false)
+IS_CONST(char *, _start))
/** Initialise a special sbuff which automatically reads in more data as the buffer is exhausted
*