### Function

# GLib set_str

since: 2.76

#### Declaration [src]

    static inline gboolean
    g_set_str (
      char** str_pointer,
      const char* new_str
    )

#### Description [src]

Updates a pointer to a string to a copy of `new_str` and returns whether the string was changed.

If `new_str` matches the previous string, this function is a no-op. If `new_str` is different, a copy of it will be assigned to `str_pointer` and the previous string pointed to by `str_pointer` will be freed with `g_free()`.

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

One convenient usage of this function is in implementing property settings:

    void
    foo_set_bar (Foo        *foo,
                 const char *new_bar)
    {
      g_return_if_fail (IS_FOO (foo));

      if (g_set_str (&foo->bar, new_bar))
        g_object_notify (foo, "bar");
    }

Available since: 2.76

This function is not directly available to language bindings.

#### Parameters

`str_pointer`

  Type: `char**`

  A pointer to either a string 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_str`

  Type: `const char*`

  A string to assign to `str_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 `str_pointer` changed, false otherwise.