Hi,

I try to use a *C* library with *GO* and have a small problem passing a *GO* 
pointer through *C* into a *GO* callback.
If I set: "*export GODEBUG=cgocheck=0*" everything works fine but without I 
get the error from above

Detail: I want to pass "*argv*" through *C* back to *GO*, the lifetime of 
the *argv* is only the lifetime of the *Send* function call

// PROBLEM: [ErrorCatch] runtime error: cgo argument has Go pointer to Go 
pointer                                  
// SOLVE:   export 
GODEBUG=cgocheck=0                                                              
                

func (this *MqC) Send (callSig string, argv ...interface{}) 
{                                                      
  hdl := 
this.getCTX()                                                                   
                          

  callSig_ptr := 
(C.MQ_CST)(C.CString(callSig))                                                  
                  

  defer 
C.free((unsafe.Pointer)(callSig_ptr))                                           
                           

                                                                                
                                   

  var errVal C.enum_MqErrorE = C.gomsgque_Send(hdl, callSig_ptr, 
C.MQ_INT(len(argv)), unsafe.Pointer(&argv))       
                                                                                
                                   

  if (errVal > C.MQ_CONTINUE) { MqErrorC_Check(C.MQ_MNG(hdl), errVal) 
}                                            
}                                                                               
                                   


The callback is:

//export atomSet
func atomSet( hdl   C.MQ_MNG, objv  unsafe.Pointer, skip  C.MQ_INT, typ 
C.enum_MqSendE,
                inP  unsafe.Pointer) C.enum_MqErrorE {
  ifc := (*(*[]interface{})(objv))[skip]
...
}

so, what is the GO solution for pass-through problem.

thanks… mfg ao

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/5cfa2851-f81c-4a79-b526-619d064c0d39%40googlegroups.com.

Reply via email to