@@ -26,6 +26,31 @@ package ibmmq
26
26
#include <cmqc.h>
27
27
#include <cmqxc.h>
28
28
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->Version = MQCNO_VERSION_6;
40
+ mqcno->CCDTUrlOffset = 0;
41
+ mqcno->CCDTUrlPtr = NULL;
42
+ mqcno->CCDTUrlLength = length;
43
+ if (url != NULL) {
44
+ mqcno->CCDTUrlPtr = url;
45
+ }
46
+ #else
47
+ mqcno->Version = MQCNO_CURRENT_VERSION;
48
+ if (url != NULL) {
49
+ free(url);
50
+ }
51
+ #endif
52
+ }
53
+
29
54
*/
30
55
import "C"
31
56
import "unsafe"
@@ -152,14 +177,7 @@ func copyCNOtoC(mqcno *C.MQCNO, gocno *MQCNO) {
152
177
mqcno .SecurityParmsPtr = nil
153
178
}
154
179
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
- }
180
+ C .setCCDTUrl (mqcno , C .PMQCHAR (C .CString (gocno .CCDTUrl )), C .MQLONG (len (gocno .CCDTUrl )))
163
181
return
164
182
}
165
183
@@ -187,8 +205,6 @@ func copyCNOfromC(mqcno *C.MQCNO, gocno *MQCNO) {
187
205
C .free (unsafe .Pointer (mqcno .SSLConfigPtr ))
188
206
}
189
207
190
- if mqcno .CCDTUrlPtr != nil {
191
- C .free (unsafe .Pointer (mqcno .CCDTUrlPtr ))
192
- }
208
+ C .freeCCDTUrl (mqcno )
193
209
return
194
210
}
0 commit comments