aboutsummaryrefslogtreecommitdiffstats
path: root/libsimple/realloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'libsimple/realloc.h')
-rw-r--r--libsimple/realloc.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/libsimple/realloc.h b/libsimple/realloc.h
new file mode 100644
index 0000000..3e2fece
--- /dev/null
+++ b/libsimple/realloc.h
@@ -0,0 +1,72 @@
+/* See LICENSE file for copyright and license details. */
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__warn_unused_result__)))
+void *libsimple_vreallocn(void *, size_t, va_list);
+#ifndef vreallocn
+# define vreallocn libsimple_vreallocn
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__warn_unused_result__)))
+static inline void *
+libsimple_reallocn(void *__ptr, size_t __n, ... /*, (size_t)0 */)
+{
+ va_list __ap;
+ va_start(__ap, __n);
+ return libsimple_vreallocn(__ptr, __n, __ap);
+ va_end(__ap);
+}
+#ifndef reallocn
+# define reallocn libsimple_reallocn
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__alloc_size__(3), __warn_unused_result__, __returns_nonnull__)))
+void *libsimple_enrealloc(int, void *, size_t);
+#ifndef enrealloc
+# define enrealloc libsimple_enrealloc
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__warn_unused_result__, __returns_nonnull__)))
+void *libsimple_envreallocn(int, void *, size_t, va_list);
+#ifndef envreallocn
+# define envreallocn libsimple_envreallocn
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__warn_unused_result__, __returns_nonnull__)))
+static inline void *
+libsimple_enreallocn(int __status, void *__ptr, size_t __n, ... /*, (size_t)0 */)
+{
+ va_list __ap;
+ va_start(__ap, __n);
+ return libsimple_envreallocn(__status, __ptr, __n, __ap);
+ va_end(__ap);
+}
+#ifndef enreallocn
+# define enreallocn libsimple_enreallocn
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__alloc_size__(2), __warn_unused_result__, __returns_nonnull__)))
+static inline void *libsimple_erealloc(void *__ptr, size_t __n)
+{ return enrealloc(libsimple_default_failure_exit, __ptr, __n); }
+#ifndef erealloc
+# define erealloc libsimple_erealloc
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__warn_unused_result__, __returns_nonnull__)))
+static inline void *libsimple_evreallocn(void *__ptr, size_t __n, va_list __ap)
+{ return libsimple_envreallocn(libsimple_default_failure_exit, __ptr, __n, __ap); }
+#ifndef evreallocn
+# define evreallocn libsimple_evreallocn
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__warn_unused_result__, __returns_nonnull__)))
+static inline void *
+libsimple_ereallocn(void *__ptr, size_t __n, ... /*, (size_t)0 */)
+{
+ va_list __ap;
+ va_start(__ap, __n);
+ return libsimple_evreallocn(__ptr, __n, __ap);
+ va_end(__ap);
+}
+#ifndef ereallocn
+# define ereallocn libsimple_ereallocn
+#endif