@@ -84,7 +84,7 @@ func run(vm *jni.VM, output *bytes.Buffer) error {
8484 if err != nil {
8585 return fmt .Errorf ("Manager.GetAdapter: %w" , err )
8686 }
87- if adapterObj == nil {
87+ if adapterObj == nil || adapterObj . Ref () == 0 {
8888 fmt .Fprintln (output , "BluetoothAdapter is null" )
8989 return nil
9090 }
@@ -128,7 +128,7 @@ func run(vm *jni.VM, output *bytes.Buffer) error {
128128 connDevs , err := mgr .GetConnectedDevices (int32 (bluetooth .GattServerConst ))
129129 if err != nil {
130130 fmt .Fprintf (output , "GetConnectedDevices(GATT_SERVER): %v\n " , err )
131- } else if connDevs == nil {
131+ } else if connDevs == nil || connDevs . Ref () == 0 {
132132 fmt .Fprintln (output , "Connected devices list: null" )
133133 } else {
134134 fmt .Fprintln (output , "Connected devices list: obtained OK" )
@@ -139,7 +139,7 @@ func run(vm *jni.VM, output *bytes.Buffer) error {
139139 connDevsGatt , err := mgr .GetConnectedDevices (int32 (bluetooth .GattConst ))
140140 if err != nil {
141141 fmt .Fprintf (output , "GetConnectedDevices(GATT): %v\n " , err )
142- } else if connDevsGatt == nil {
142+ } else if connDevsGatt == nil || connDevsGatt . Ref () == 0 {
143143 fmt .Fprintln (output , "GATT client connected devices: null" )
144144 } else {
145145 fmt .Fprintln (output , "GATT client connected devices: obtained OK" )
@@ -220,7 +220,7 @@ func run(vm *jni.VM, output *bytes.Buffer) error {
220220 scannerObj , err := adapter .GetBluetoothLeScanner ()
221221 if err != nil {
222222 fmt .Fprintf (output , "GetBluetoothLeScanner: error (%v)\n " , err )
223- } else if scannerObj == nil {
223+ } else if scannerObj == nil || scannerObj . Ref () == 0 {
224224 fmt .Fprintln (output , "BLE scanner: not available" )
225225 } else {
226226 scanner := & le.BluetoothLeScanner {VM : vm , Obj : scannerObj }
@@ -235,7 +235,7 @@ func run(vm *jni.VM, output *bytes.Buffer) error {
235235 advObj , err := adapter .GetBluetoothLeAdvertiser ()
236236 if err != nil {
237237 fmt .Fprintf (output , "GetBluetoothLeAdvertiser: error (%v)\n " , err )
238- } else if advObj == nil {
238+ } else if advObj == nil || advObj . Ref () == 0 {
239239 fmt .Fprintln (output , "BLE advertiser: not available" )
240240 } else {
241241 advertiser := & le.BluetoothLeAdvertiser {VM : vm , Obj : advObj }
@@ -250,7 +250,11 @@ func run(vm *jni.VM, output *bytes.Buffer) error {
250250
251251 // --- Bonded devices ---
252252 bondedObj , err := adapter .GetBondedDevices ()
253- if err == nil && bondedObj != nil {
253+ if err != nil {
254+ fmt .Fprintf (output , "\n GetBondedDevices: error (%v)\n " , err )
255+ } else if bondedObj == nil || bondedObj .Ref () == 0 {
256+ fmt .Fprintln (output , "\n Bonded devices set: null" )
257+ } else {
254258 fmt .Fprintln (output , "\n Bonded devices set: obtained OK" )
255259 vm .Do (func (env * jni.Env ) error { env .DeleteGlobalRef (bondedObj ); return nil })
256260 }
@@ -272,7 +276,11 @@ func run(vm *jni.VM, output *bytes.Buffer) error {
272276 }
273277
274278 discoverableTimeout , err := adapter .GetDiscoverableTimeout ()
275- if err == nil && discoverableTimeout != nil {
279+ if err != nil {
280+ fmt .Fprintf (output , "GetDiscoverableTimeout: error (%v)\n " , err )
281+ } else if discoverableTimeout == nil || discoverableTimeout .Ref () == 0 {
282+ fmt .Fprintln (output , "Discoverable timeout: null" )
283+ } else {
276284 fmt .Fprintln (output , "Discoverable timeout: obtained OK" )
277285 vm .Do (func (env * jni.Env ) error { env .DeleteGlobalRef (discoverableTimeout ); return nil })
278286 }
0 commit comments