summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rtemsbsd/include/machine/rtems-bsd-program.h7
-rw-r--r--rtemsbsd/rtems/rtems-program.c10
2 files changed, 17 insertions, 0 deletions
diff --git a/rtemsbsd/include/machine/rtems-bsd-program.h b/rtemsbsd/include/machine/rtems-bsd-program.h
index a6f8dc6c..e31c1a6a 100644
--- a/rtemsbsd/include/machine/rtems-bsd-program.h
+++ b/rtemsbsd/include/machine/rtems-bsd-program.h
@@ -102,6 +102,9 @@ rtems_bsd_program_calloc(size_t nelem, size_t elsize);
void *
rtems_bsd_program_realloc(void *ptr, size_t size);
+void *
+rtems_bsd_program_reallocf(void *ptr, size_t size);
+
char *
rtems_bsd_program_strdup(const char *s1);
@@ -164,6 +167,10 @@ rtems_bsd_program_free(void *ptr);
#define realloc(ptr, size) rtems_bsd_program_realloc(ptr, size)
#endif
+#ifndef RTEMS_BSD_PROGRAM_NO_REALLOC_WRAP
+ #define reallocf(ptr, size) rtems_bsd_program_reallocf(ptr, size)
+#endif
+
#ifndef RTEMS_BSD_PROGRAM_NO_STRDUP_WRAP
#define strdup(s1) rtems_bsd_program_strdup(s1)
#endif
diff --git a/rtemsbsd/rtems/rtems-program.c b/rtemsbsd/rtems/rtems-program.c
index 45d5450d..ba8d5c57 100644
--- a/rtemsbsd/rtems/rtems-program.c
+++ b/rtemsbsd/rtems/rtems-program.c
@@ -535,6 +535,16 @@ rtems_bsd_program_realloc(void *ptr, size_t size)
return rtems_bsd_program_alloc(size, ptr);
}
+void *
+rtems_bsd_program_reallocf(void *ptr, size_t size)
+{
+ void *ret = rtems_bsd_program_alloc(size, ptr);
+ if (ret == NULL) {
+ free(ptr);
+ }
+ return ret;
+}
+
char *
rtems_bsd_program_strdup(const char *s1)
{