Skip to content

warning: ‘ext_bit’ may be used uninitialized in this function

Summary

The PER encoder of the extended enumeration causes c++ warning like:

CAP_datatypes_CAPv4.cc: In member function ‘void CAP__datatypes__CAPv4::EventTypeBCSM::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int) const’:
CAP_datatypes_CAPv4.cc:22640:18: warning: ‘ext_bit’ may be used uninitialized in this function [-Wmaybe-uninitialized]
22640 | p_buf.PER_put_bit(ext_bit);
      | ~~~~~~~~~~~~~~~~~^~~~~~~~~

Steps and/or TTCN-3 code to reproduce

Example ASN.1 enum:

EventTypeBCSM ::= ENUMERATED {
	collectedInfo						(2),
	analyzedInformation					(3),
	routeSelectFailure					(4),
	oCalledPartyBusy					(5),
	oNoAnswer							(6),
	oAnswer								(7),
	oMidCall							(8),
	oDisconnect							(9),
	oAbandon							(10),
	termAttemptAuthorized				(12),
	tBusy								(13),
	tNoAnswer							(14),
	tAnswer								(15),
	tMidCall							(16),
	tDisconnect							(17),
	tAbandon							(18),
	oTermSeized							(19),
	callAccepted						(27),
	oChangeOfPosition					(50),
	tChangeOfPosition					(51),
	...,
	oServiceChange						(52),
	tServiceChange						(53)
	}

What is the current bug behavior?

CAP_datatypes_CAPv4.cc: In member function ‘void CAP__datatypes__CAPv4::EventTypeBCSM::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int) const’:
CAP_datatypes_CAPv4.cc:22640:18: warning: ‘ext_bit’ may be used uninitialized in this function [-Wmaybe-uninitialized]
22640 | p_buf.PER_put_bit(ext_bit);
      | ~~~~~~~~~~~~~~~~~^~~~~~~~~

In ext_bit is not initialized if the value is unbound. It doesn't cause run time problem, just compile time warning.

What is the expected correct behavior?

no warning.

Possible fixes

Initialize the ext_bit when declared.

Titan version

10.0.0 & git head

/cc @aknappqwt @mmagyari