tbf: Fix memset(0) on object with no trivial copy-assignment
As warned by gcc 8.1.0:
osmo-pcu/src/tbf.cpp: In constructor ‘gprs_rlcmac_tbf::gprs_rlcmac_tbf(BTS*, gprs_rlcmac_tbf_direction)’:
osmo-pcu/src/tbf.cpp:222:33: error: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct gprs_rlc’ with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess]
memset(&m_rlc, 0, sizeof(m_rlc));
^
In file included from osmo-pcu/src/tbf.h:24,
from osmo-pcu/src/bts.h:37,
from osmo-pcu/src/tbf.cpp:22:
osmo-pcu/src/rlc.h:234:8: note: ‘struct gprs_rlc’ declared here
struct gprs_rlc {
^~~~~~~~
Change-Id: Ifb0529b9ae6cd4300e5cbbd9151054792edbfe06
diff --git a/src/rlc.h b/src/rlc.h
index aac6b13..5b6a0dd 100644
--- a/src/rlc.h
+++ b/src/rlc.h
@@ -24,6 +24,7 @@
#include <osmocom/core/endian.h>
#include <stdint.h>
+#include <string.h>
#define RLC_GPRS_SNS 128 /* GPRS, must be power of 2 */
#define RLC_GPRS_WS 64 /* max window size */
@@ -232,6 +233,7 @@
* the routines to manipulate these arrays.
*/
struct gprs_rlc {
+ void init();
gprs_rlc_data *block(int bsn);
gprs_rlc_data m_blocks[RLC_MAX_SNS/2];
};
@@ -647,6 +649,11 @@
return m_v_n[bsn & mod_sns_half()];
}
+inline void gprs_rlc::init()
+{
+ memset(m_blocks, 0, sizeof(m_blocks));
+}
+
inline gprs_rlc_data *gprs_rlc::block(int bsn)
{
return &m_blocks[bsn & mod_sns_half()];