Re: Librsvg 2.41.0 is released



On Wed, 2017-01-11 at 18:18 -0800, Christian Hergert wrote:

Not sure, its a runtime error you would see when a downstream would
try
to register an already registered GType.

How does one get this to happen?  

Is it only a problem if two threads race to pass the same type_name to
g_type_register_*()?

Or if a library defines a shitty foo_get_type() without the g_once
magic from G_DEFINE_TYPE(), and gets called from two threads?

It might work today, just something to consider. One example might be
if
the glib-rs marshaler decided to created a string boxed type for UTF-
8
strings to avoid further deep copies.

Nah, it's Rust-only magic to deal conveniently with passing/getting
arguments to/from glib.  Where the GObject introspection annotations
say transfer-full, you can call String::from_glib_full(ptr_to_c_char);
where they say transfer-none, you can call String::from_glib_none(ptr).
 It doesn't register new GTypes at all.

  Federico


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]