]>
Commit | Line | Data |
---|---|---|
056a1eb7 SF |
1 | /* $Id: alloc.cpp $ */ |
2 | /** @file | |
3 | * IPRT - Memory Allocation. | |
4 | */ | |
5 | ||
6 | /* | |
7 | * Copyright (C) 2006-2016 Oracle Corporation | |
8 | * | |
9 | * This file is part of VirtualBox Open Source Edition (OSE), as | |
10 | * available from http://www.virtualbox.org. This file is free software; | |
11 | * you can redistribute it and/or modify it under the terms of the GNU | |
12 | * General Public License (GPL) as published by the Free Software | |
13 | * Foundation, in version 2 as it comes in the "COPYING" file of the | |
14 | * VirtualBox OSE distribution. VirtualBox OSE is distributed in the | |
15 | * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. | |
16 | * | |
17 | * The contents of this file may alternatively be used under the terms | |
18 | * of the Common Development and Distribution License Version 1.0 | |
19 | * (CDDL) only, as it comes in the "COPYING.CDDL" file of the | |
20 | * VirtualBox OSE distribution, in which case the provisions of the | |
21 | * CDDL are applicable instead of those of the GPL. | |
22 | * | |
23 | * You may elect to license modified versions of this file under the | |
24 | * terms and conditions of either the GPL or the CDDL or both. | |
25 | */ | |
26 | ||
27 | ||
28 | /********************************************************************************************************************************* | |
29 | * Header Files * | |
30 | *********************************************************************************************************************************/ | |
31 | #ifndef RTMEM_NO_WRAP_TO_EF_APIS | |
32 | # define RTMEM_NO_WRAP_TO_EF_APIS | |
33 | #endif | |
34 | #include <iprt/mem.h> | |
35 | #include "internal/iprt.h" | |
36 | ||
37 | #include <iprt/assert.h> | |
38 | #include <iprt/string.h> | |
39 | ||
40 | ||
41 | ||
42 | RTDECL(void *) RTMemDupTag(const void *pvSrc, size_t cb, const char *pszTag) RT_NO_THROW_DEF | |
43 | { | |
44 | void *pvDst = RTMemAllocTag(cb, pszTag); | |
45 | if (pvDst) | |
46 | memcpy(pvDst, pvSrc, cb); | |
47 | return pvDst; | |
48 | } | |
49 | RT_EXPORT_SYMBOL(RTMemDupTag); | |
50 | ||
51 | ||
52 | RTDECL(void *) RTMemDupExTag(const void *pvSrc, size_t cbSrc, size_t cbExtra, const char *pszTag) RT_NO_THROW_DEF | |
53 | { | |
54 | void *pvDst = RTMemAllocTag(cbSrc + cbExtra, pszTag); | |
55 | if (pvDst) | |
56 | { | |
57 | memcpy(pvDst, pvSrc, cbSrc); | |
58 | memset((uint8_t *)pvDst + cbSrc, 0, cbExtra); | |
59 | } | |
60 | return pvDst; | |
61 | } | |
62 | RT_EXPORT_SYMBOL(RTMemDupExTag); | |
63 |