BSSAP_CodecPort: Don't dereference optional fields unconditionally
diff --git a/library/BSSAP_CodecPort.ttcn b/library/BSSAP_CodecPort.ttcn
index 383f3d3..27056a4 100644
--- a/library/BSSAP_CodecPort.ttcn
+++ b/library/BSSAP_CodecPort.ttcn
@@ -215,7 +215,11 @@
pout.calledAddress := pin.calledAddress;
pout.callingAddress := pin.callingAddress;
pout.qualityOfService := pin.qualityOfService;
- pout.userData := dec_PDU_BSSAP(pin.userData);
+ if (ispresent(pin.userData)) {
+ pout.userData := dec_PDU_BSSAP(pin.userData);
+ } else {
+ pout.userData := omit;
+ }
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
@@ -224,7 +228,11 @@
private function f_dec_ConnectCfm(in ASP_SCCP_N_CONNECT_cfm pin, out BSSAP_N_CONNECT_cfm pout) {
pout.respondingAddress := pin.respondingAddress;
pout.qualityOfService := pin.qualityOfService;
- pout.userData := dec_PDU_BSSAP(pin.userData);
+ if (ispresent(pin.userData)) {
+ pout.userData := dec_PDU_BSSAP(pin.userData);
+ } else {
+ pout.userData := omit;
+ }
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
@@ -241,7 +249,11 @@
pout.originator := pin.originator;
pout.respondingAddress := pin.respondingAddress;
pout.reason := pin.reason;
- pout.userData := dec_PDU_BSSAP(pin.userData);
+ if (ispresent(pin.userData)) {
+ pout.userData := dec_PDU_BSSAP(pin.userData);
+ } else {
+ pout.userData := omit;
+ }
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
@@ -273,7 +285,11 @@
pout.callingAddress := pin.callingAddress;
pout.expeditedDataSel := pin.expeditedDataSel;
pout.qualityOfService := pin.qualityOfService;
- pout.userData := enc_PDU_BSSAP(pin.userData);
+ if (ispresent(pin.userData)) {
+ pout.userData := enc_PDU_BSSAP(pin.userData);
+ } else {
+ pout.userData := omit;
+ }
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);