@@ -224,25 +224,33 @@ func getScanResultFromArgs(args *advertisement.BluetoothLEAdvertisementReceivedE
224224Address : adr ,
225225}
226226
227+ winAdv , err := args .GetAdvertisement ()
228+ if err != nil {
229+ return result
230+ }
231+ defer winAdv .Release ()
232+
227233var 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 )
233240manData := (* advertisement .BluetoothLEManufacturerData )(element )
234241companyID , _ := manData .GetCompanyId ()
235242buffer , _ := manData .GetData ()
236243manufacturerData = append (manufacturerData , ManufacturerDataElement {
237244CompanyID : companyID ,
238245Data : 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 ()
246254result .AdvertisementPayload = & advertisementFields {
247255AdvertisementFields {
248256LocalName : localName ,
0 commit comments