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);