GLib.set_strv
Description: Reference for GLib.set_strv

### Function

# GLibset_strv

unstable since: 2.90

#### Declaration [src]

    static inline gboolean
    g_set_strv (
      char*** strv_pointer,
      const char* const* new_strv
    )

#### Description [src]

Safely replaces a string vector.

Updates a pointer to a `NULL`-terminated string array to a copy of `new_strv` and returns whether the value was changed.

If `new_strv` matches the previous array, this function is a no-op. If `new_strv` is different, a copy of it will be assigned to `strv_pointer` and the previous array pointed to by `strv_pointer` will be freed with `g_strfreev()`.

The contents of both string arrays are compared for equality before replacing the value. In the worst case this requires O(N) time.

This function avoids a potential use-after-free when `new_strv` reuses pointers from the original string array. This allows callers to build a replacement array using existing strings without needing to copy them beforehand.

`strv_pointer` must not be `NULL`, but can point to a `NULL` value.

Available since: 2.90

This function is not directly available to language bindings.

#### Parameters

`strv_pointer`

  Type: `char***`

  A pointer to either a `NULL`-terminated string array or `NULL`.

  The argument will be modified by the function.
  The caller of the function takes ownership of the returned data, and is responsible for freeing it.
  The value is a NUL terminated UTF-8 string.

`new_strv`

  Type: `const char* const*`

  A NULL-terminated string array to assign to `strv_pointer`.

  The argument can be `NULL`.
  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

#### Return value

Type: `gboolean`

True if the value of `strv_pointer` changed, false otherwise.