Thank you for the valuable feedback. I tried as much as I could to maintain
the semantics as is, only changing the calls to GLib's functions.

To assure myself that I understood the directions of your feedback, the initialization
of the tables can be done using g_malloc directly and all the null checks for the tables
to be dropped. And that's because of the cruciality of this initialization code. 

Can you please elaborate more on how I would employ g_autofree in this code? Are 
you talking about the memory allocated for ``ptr`` in OPLCreate here?

Thanks
Mahmoud Mandour