Hey coderman, The structure you link to is local to only that static function. It doesn't share the reference outside the function, to lead to the corruption you express concern around. The class also has a member variable for use in a more ongoing way. Maybe it would be good to use an instance of the class in that static function to be more organised, though, or something. I mentioned the issue on the chat and got a couple recommendations for antivirus software. I'm thinking if I could use an android emulator to bundle the issue up so it reproduces, I'm thinking it might help for giving something to an antivirus vendor. I'm not sure. Sometimes I struggle to continue with projects and there are extensive delays (a number of years now for my volk pull request). This looks likely to be one of those times; we'll find out. On Fri, Feb 26, 2021, 12:14 PM coderman <coderman@protonmail.com> wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512
hello Karl!
i haven't had time to dig into this much, but one thing stuck out to me in how you're using the FTDI content and functions.
here you initialize the ftdi_content, but are using a local structure variable:
https://github.com/xloem/brainflow/blob/ecd1049f3a4146bd24a0b21f50b5267eb1d6...
once you return from LibFTDISerial::is_libftdi () function, the ftdi_context will be destroyed.
you'll notice that this context must live as long as the process, otherwise references to it will become invalid, leading to stack / heap corruption.
for example, this usage calls from main(), where the ftdi_context will exist as long as the program is running:
https://github.com/punyal/Contiki_3-IPsec/blob/93130cd1123f362594e915283dbf7...
you could solve this by declaring a static (global) ftdi_context, however, this entails locking / concurrency concerns.
i hope this helps. perhaps later this weekend i dig in depth into your problems.
best regards,
-----BEGIN PGP SIGNATURE-----
iNUEAREKAH0WIQRBwSuMMH1+IZiqV4FlqEfnwrk4DAUCYDksRF8UgAAAAAAuAChp c3N1ZXItZnByQG5vdGF0aW9ucy5vcGVucGdwLmZpZnRoaG9yc2VtYW4ubmV0NDFD MTJCOEMzMDdEN0UyMTk4QUE1NzgxNjVBODQ3RTdDMkI5MzgwQwAKCRBlqEfnwrk4 DJSNAP4/21OaXu96TS2w7kZGQhurSOQilGQ+ZA4g6TllSIKUVgEAzbeQ7/hmf3Nw eZfqr5al/5d5LZF3bFcfKqJ1E1fmh8s= =EkrV -----END PGP SIGNATURE-----