since: 2.24


g_variant_new_from_data (
  const GVariantType* type,
  gconstpointer data,
  gsize size,
  gboolean trusted,
  GDestroyNotify notify,
  gpointer user_data


Creates a new GVariant instance from serialized data.

type is the type of GVariant instance that will be constructed. The interpretation of data depends on knowing the type.

data is not modified by this function and must remain valid with an unchanging value until such a time as notify is called with user_data. If the contents of data change before that time then the result is undefined.

If data is trusted to be serialized data in normal form then trusted should be TRUE. This applies to serialized data created within this process or read from a trusted location on the disk (such as a file installed in /usr/lib alongside your application). You should set trusted to FALSE if data is read from the network, a file in the user’s home directory, etc.

If data was not stored in this machine’s native endianness, any multi-byte numeric values in the returned variant will also be in non-native endianness. g_variant_byteswap() can be used to recover the original values.

notify will be called with user_data when data is no longer needed. The exact time of this call is unspecified and might even be before this function returns.

Note: data must be backed by memory that is aligned appropriately for the type being loaded. Otherwise this function will internally create a copy of the memory (since GLib 2.60) or (in older versions) fail and exit the process.

Available since: 2.24



Type: GVariantType

A definite GVariantType.

The data is owned by the caller of the function.

Type: An array of guint8

The serialized data.

The length of the array is specified in the size argument.

Type: gsize

The size of data.


Type: gboolean

TRUE if data is definitely in normal form.


Type: GDestroyNotify

Function to call when data is no longer needed.


Type: gpointer

Data for notify.

The argument can be NULL.
The data is owned by the caller of the function.

Return value

Type: GVariant

A new floating GVariant of type type.

The data is owned by the called function.