> On Apr 25, 2017, at 2:57 PM, Rick Mann via swift-users > <swift-users@swift.org> wrote: > > I'm trying to pass a Data of allocated size to a C function for it to fill in: > > > lib_example_call(_ params: UnsafePointer<lib_call_params_t>!, _ data: > UnsafeMutableRawPointer!) > > ... > { > self.dataBuffer = Data(capacity: BufferSizeConstant)
If you want to create a buffer with a given count you should use Data(count: Int), the method you are using just reserves a given capacity. (from what I can tell from your code that is likely what you really want) > > var params = lib_call_params_t(); > params.data_capacity = BufferSizeConstant; > > self.dataBuffer?.withUnsafeMutableBytes > { (inBuffer) -> Void in > lib_example_call(¶ms, inBuffer) > } > } > > I later get called back by the library with a size value of the actual data > it got. self.dataBuffer is a var. I set self.dataBuffer?.count = result size, > which is a reasonable value. > > Unfortunately, the resulting buffer is all zeros. The data generated by the > call is definitely not all zero, and a C example program using the same > library works correctly. > > So, I think there's something wrong in the way I'm making the call. > > Can anyone please enlighten me? Thanks! > > -- > Rick Mann > rm...@latencyzero.com > > > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users