@@ -26,6 +26,29 @@ package ibmmq
2626#include <cmqc.h>
2727#include <cmqxc.h>
2828
29+ void freeCCDTUrl(MQCNO *mqcno) {
30+ #if defined(MQCNO_VERSION_6) && MQCNO_CURRENT_VERSION == MQCNO_VERSION_6
31+ if (mqcno.CCDTUrlPtr != NULL) {
32+ free(mqcno.CCDTUrlPtr);
33+ }
34+ #endif
35+ }
36+
37+ void setCCDTUrl(MQCNO *mqcno, PMQCHAR url, MQLONG length) {
38+ #if defined(MQCNO_VERSION_6) && MQCNO_CURRENT_VERSION == MQCNO_VERSION_6
39+ mqcno.CCDTUrlOffset = 0;
40+ mqcno.CCDTUrlPtr = NULL;
41+ mqcno.CCDTUrlLength = length;
42+ if (url != NULL) {
43+ mqcno.CCDTUrlPtr = PMQCHAR(url);
44+ }
45+ #else
46+ if (url != NULL) {
47+ free(url);
48+ }
49+ #endif
50+ }
51+
2952*/
3053import "C"
3154import "unsafe"
@@ -152,14 +175,7 @@ func copyCNOtoC(mqcno *C.MQCNO, gocno *MQCNO) {
152175 mqcno .SecurityParmsPtr = nil
153176 }
154177
155- mqcno .CCDTUrlOffset = 0
156- if len (gocno .CCDTUrl ) != 0 {
157- mqcno .CCDTUrlPtr = C .PMQCHAR (unsafe .Pointer (C .CString (gocno .CCDTUrl )))
158- mqcno .CCDTUrlLength = C .MQLONG (len (gocno .CCDTUrl ))
159- } else {
160- mqcno .CCDTUrlPtr = nil
161- mqcno .CCDTUrlLength = 0
162- }
178+ C .setCCDTUrl (mqcno , C .PMQCHAR (C .CString (gocno .CCDTUrl )), C .MQLONG (len (gocno .CCDTUrl )))
163179 return
164180}
165181
@@ -187,8 +203,6 @@ func copyCNOfromC(mqcno *C.MQCNO, gocno *MQCNO) {
187203 C .free (unsafe .Pointer (mqcno .SSLConfigPtr ))
188204 }
189205
190- if mqcno .CCDTUrlPtr != nil {
191- C .free (unsafe .Pointer (mqcno .CCDTUrlPtr ))
192- }
206+ C .freeCCDTUrl (mqcno )
193207 return
194208}
0 commit comments