demo: Do not rely on cb_data when stopping acquisition
authorAlexandru Gagniuc <mr.nuke.me@gmail.com>
Sat, 2 Feb 2013 05:47:26 +0000 (23:47 -0600)
committerAlexandru Gagniuc <mr.nuke.me@gmail.com>
Sat, 2 Feb 2013 06:44:12 +0000 (00:44 -0600)
commit20c31ea98c255b679de787618aff253b49850e4b
treed6509ebfa6b6b6dd2c5eae33fa234456006cad6d
parentc4227fc637431113ba92092ddbda86461703c06c
demo: Do not rely on cb_data when stopping acquisition

When called from sr_session_stop, cb_data is not what we expect it to be (the
device context). sr_session_stop() passes sdi for cb_data, we end up
dereferencing the wrong pointer, and we pass an invalid channel to
g_io_channel_shutdown(), causing a segmentation fault.

Store the device context in sdi->priv, and don't rely on cb_data containing
the device context.

This partially fixes bug 4. The problems inherent with calling sr_session_stop
from a different thread still remain (see bugzilla report for more details).
http://sigrok.org/bugzilla/show_bug.cgi?id=4

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
hardware/demo/demo.c