supply g_memdup2() for glib before 2.68.
[pspp] / src / ui / gui / glibfix.h
1 /* PSPPIRE - a graphical user interface for PSPP.
2    Copyright (C) 2022 Free Software Foundation
3
4    This program is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation, either version 3 of the License, or
7    (at your option) any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
16
17 #ifndef __GLIBFIX_H__
18 #define __GLIBFIX_H__
19
20 #include <config.h>
21
22 /* Workaround for g_memdup2 which is introduced in glib 2.67.3
23    for earlier versions of glib
24    Taken from:
25    https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1927
26 */
27
28 #ifndef HAVE_G_MEMDUP2
29 static inline gpointer
30 g_memdup2 (gconstpointer mem,
31            gsize         byte_size)
32 {
33   gpointer new_mem;
34
35   if (mem && byte_size != 0)
36     {
37       new_mem = g_malloc (byte_size);
38       memcpy (new_mem, mem, byte_size);
39     }
40   else
41     new_mem = NULL;
42
43   return new_mem;
44 }
45 #endif
46
47 #endif