You need to sign in or sign up before continuing.
Wrong code generated for out parameters
Summary
Wrong code is generated for out parameters if the function call is used in the return statement
Steps and/or TTCN-3 code to reproduce
external function dec_PDU_UEparametersUpdatetransparentConatinerTLVE_backtrack(in octetstring stream, out UEparametersUpdatetransparentConatinerTLVE pdu) return integer
with { extension "prototype(backtrack) decode(RAW)" }
function dec_PDU_UEparametersUpdatetransparentConatinerV_backtrack(in octetstring stream, out UEparametersUpdatetransparentConatinerTLVE pdu) return integer {
return dec_PDU_UEparametersUpdatetransparentConatinerTLVE_backtrack('00'O & int2oct(lengthof(stream), 2) & stream, pdu)
}
The generated code:
INTEGER dec__PDU__UEparametersUpdatetransparentConatinerV__backtrack(const OCTETSTRING& stream, UEparametersUpdatetransparentConatinerTLVE& pdu)
{
TTCN_Location current_location("NAS_5GS_Types.ttcn", 69, TTCN_Location::LOCATION_FUNCTION, "dec_PDU_UEparametersUpdatetransparentConatinerV_backtrack");
current_location.update_lineno(70);
/* NAS_5GS_Types.ttcn, line 70 */
{
UEparametersUpdatetransparentConatinerTLVE tmp_0;
return dec__PDU__UEparametersUpdatetransparentConatinerTLVE__backtrack(((os_117 + int2oct(stream.lengthof(), 2)) + stream), tmp_0);
if (tmp_0.is_bound()) pdu = tmp_0;
}
}
What is the current bug behavior?
The value returned by the dec_PDU_UEparametersUpdatetransparentConatinerTLVE_backtrack is lost instead of returned as the pdu out parameter of the dec_PDU_UEparametersUpdatetransparentConatinerV_backtrack
Titan version
10.1.2, 11.0.0
Platform details (OS type and version)
(OS type/distribution and version, e.g. Ubuntu 18.04, Windows 10+Cygwin)
/cc @aknappqwt @mmagyari
Edited by Gábor Szalai