Eliminating the risk of dangling pointers in GTK+
- From: Karsten Pedersen <karsten oscar gmail com>
- To: gtk-list gnome org
- Subject: Eliminating the risk of dangling pointers in GTK+
- Date: Thu, 31 Mar 2016 15:41:37 +0100
Hi,
I have developed a technology (called libstent) that prevents the risk
of dangling pointers in the C language. Due to the functionality of
g_object_weak_ref provided by GTK+ (well, GLIB), it has been easy to
integrate the two projects together.
If any of you have time, you might find it interesting to have a look
through a small example code. It would also be fantastic to hear your
feedback and any suggestions / issues you can find.
https://github.com/osen/stent/blob/master/example/gtk/main.c
In general the following snippet describes what libstent does. First,
the problem:
----------------------- 8< -----------------------
struct SomeStruct *ptr = SomeStructCreate();
DoSomething(ptr);
// is ptr still valid? How do we know if DoSomething has freed the data or not?
----------------------- >8 -----------------------
So now a potential solution with libstent:
----------------------- 8< -----------------------
REF(SomeStruct) ptr = SomeStructCreate();
DoSomething(ptr)
// GET(ptr) is guaranteed to return NULL if DoSomething has freed the data
----------------------- >8 -----------------------
GTK+ has been a great project to test this with because not only is it
very large but it also provides a lot of potential complexities such
as callbacks providing raw pointers rather than the “smart” pointers
provided by libstent.
Thanks,
Karsten Pedersen
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]