]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[Core] Allow switch_buffer_write() to fill in a buffer with zeros. Add switch_buffer_... 1665/head
authorAndrey Volk <andywolk@gmail.com>
Sat, 19 Feb 2022 15:10:26 +0000 (18:10 +0300)
committerAndrey Volk <andywolk@gmail.com>
Mon, 23 May 2022 18:51:26 +0000 (21:51 +0300)
src/include/switch_buffer.h
src/switch_buffer.c

index 7025308544864b013cf85618741e8504d4578fc6..72d9a18e3ba7226acb71fb317d91200a7171836d 100644 (file)
@@ -132,13 +132,15 @@ SWITCH_DECLARE(void) switch_buffer_set_loops(_In_ switch_buffer_t *buffer, _In_
 
 /*! \brief Write data into a switch_buffer_t up to the length of datalen
  * \param buffer any buffer of type switch_buffer_t
- * \param data pointer to the data to be written
+ * \param data pointer to the data to be written or 0 to fill in with datalen zeros
  * \param datalen amount of data to be written
  * \return int amount of buffer used after the write, or 0 if no space available
  */
 SWITCH_DECLARE(switch_size_t) switch_buffer_write(_In_ switch_buffer_t *buffer, _In_bytecount_(datalen)
                                                                                                  const void *data, _In_ switch_size_t datalen);
 
+#define switch_buffer_zero_fill(_buffer, _datalen) switch_buffer_write(_buffer, 0, _datalen);
+
 /*! \brief Remove data from the buffer
  * \param buffer any buffer of type switch_buffer_t
  * \param datalen amount of data to be removed
index 5ca53a4683ba19e9ca2b5633c00e426d59467768..bf31952da589f5e12f4a316595d571112adfa635 100644 (file)
@@ -344,7 +344,12 @@ SWITCH_DECLARE(switch_size_t) switch_buffer_write(switch_buffer_t *buffer, const
                return 0;
        }
 
-       memcpy(buffer->head + buffer->used, data, datalen);
+       if (data) {
+               memcpy(buffer->head + buffer->used, data, datalen);
+       } else {
+               memset(buffer->head + buffer->used, 0, datalen);
+       }
+
        buffer->used += datalen;
        buffer->actually_used += datalen;
        return buffer->used;