Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / lib / libc / stdlib / realloc.c
diff --git a/qemu/roms/SLOF/lib/libc/stdlib/realloc.c b/qemu/roms/SLOF/lib/libc/stdlib/realloc.c
new file mode 100644 (file)
index 0000000..652e900
--- /dev/null
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * Copyright (c) 2004, 2008 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials
+ * are made available under the terms of the BSD License
+ * which accompanies this distribution, and is available at
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * Contributors:
+ *     IBM Corporation - initial implementation
+ *****************************************************************************/
+
+
+#include "stdlib.h"
+#include "string.h"
+#include "malloc_defs.h"
+
+void *
+realloc(void *ptr, size_t size)
+{
+       struct chunk *header;
+       char *newptr, *start;
+
+       header = (struct chunk *) ptr;
+       header--;
+
+       if (size <= header->length)
+               return ptr;
+
+       newptr = (char *) malloc(size);
+       if (newptr == NULL)
+               return 0;
+
+       start = newptr;
+       memcpy((void *) newptr, (const void *) ptr, header->length);
+
+       header->inuse = 0;
+
+       return start;
+}