Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / lib / libc / stdlib / realloc.c
1 /******************************************************************************
2  * Copyright (c) 2004, 2008 IBM Corporation
3  * All rights reserved.
4  * This program and the accompanying materials
5  * are made available under the terms of the BSD License
6  * which accompanies this distribution, and is available at
7  * http://www.opensource.org/licenses/bsd-license.php
8  *
9  * Contributors:
10  *     IBM Corporation - initial implementation
11  *****************************************************************************/
12
13
14 #include "stdlib.h"
15 #include "string.h"
16 #include "malloc_defs.h"
17
18 void *
19 realloc(void *ptr, size_t size)
20 {
21         struct chunk *header;
22         char *newptr, *start;
23
24         header = (struct chunk *) ptr;
25         header--;
26
27         if (size <= header->length)
28                 return ptr;
29
30         newptr = (char *) malloc(size);
31         if (newptr == NULL)
32                 return 0;
33
34         start = newptr;
35         memcpy((void *) newptr, (const void *) ptr, header->length);
36
37         header->inuse = 0;
38
39         return start;
40 }