@@ -224,25 +224,33 @@ func getScanResultFromArgs(args *advertisement.BluetoothLEAdvertisementReceivedE
224224 Address : adr ,
225225 }
226226
227+ winAdv , err := args .GetAdvertisement ()
228+ if err != nil {
229+ return result
230+ }
231+ defer winAdv .Release ()
232+
227233 var manufacturerData []ManufacturerDataElement
228- if winAdv , err := args .GetAdvertisement (); err == nil && winAdv != nil {
229- vector , _ := winAdv .GetManufacturerData ()
230- size , _ := vector .GetSize ()
231- for i := uint32 (0 ); i < size ; i ++ {
232- element , _ := vector .GetAt (i )
234+ mVector , _ := winAdv .GetManufacturerData ()
235+ if mVector != nil {
236+ defer mVector .Release ()
237+ mSize , _ := mVector .GetSize ()
238+ for i := uint32 (0 ); i < mSize ; i ++ {
239+ element , _ := mVector .GetAt (i )
233240 manData := (* advertisement .BluetoothLEManufacturerData )(element )
234241 companyID , _ := manData .GetCompanyId ()
235242 buffer , _ := manData .GetData ()
236243 manufacturerData = append (manufacturerData , ManufacturerDataElement {
237244 CompanyID : companyID ,
238245 Data : bufferToSlice (buffer ),
239246 })
247+ buffer .Release ()
248+ manData .Release ()
240249 }
241250 }
242251
243252 // Note: the IsRandom bit is never set.
244- advertisement , _ := args .GetAdvertisement ()
245- localName , _ := advertisement .GetLocalName ()
253+ localName , _ := winAdv .GetLocalName ()
246254 result .AdvertisementPayload = & advertisementFields {
247255 AdvertisementFields {
248256 LocalName : localName ,
0 commit comments