1987da915Sopenharmony_ci/** 2987da915Sopenharmony_ci * misc.c : miscellaneous : 3987da915Sopenharmony_ci * - dealing with errors in memory allocation 4987da915Sopenharmony_ci * 5987da915Sopenharmony_ci * Copyright (c) 2008 Jean-Pierre Andre 6987da915Sopenharmony_ci * 7987da915Sopenharmony_ci * This program/include file is free software; you can redistribute it and/or 8987da915Sopenharmony_ci * modify it under the terms of the GNU General Public License as published 9987da915Sopenharmony_ci * by the Free Software Foundation; either version 2 of the License, or 10987da915Sopenharmony_ci * (at your option) any later version. 11987da915Sopenharmony_ci * 12987da915Sopenharmony_ci * This program/include file is distributed in the hope that it will be 13987da915Sopenharmony_ci * useful, but WITHOUT ANY WARRANTY; without even the implied warranty 14987da915Sopenharmony_ci * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15987da915Sopenharmony_ci * GNU General Public License for more details. 16987da915Sopenharmony_ci * 17987da915Sopenharmony_ci * You should have received a copy of the GNU General Public License 18987da915Sopenharmony_ci * along with this program (in the main directory of the NTFS-3G 19987da915Sopenharmony_ci * distribution in the file COPYING); if not, write to the Free Software 20987da915Sopenharmony_ci * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21987da915Sopenharmony_ci */ 22987da915Sopenharmony_ci 23987da915Sopenharmony_ci#ifdef HAVE_CONFIG_H 24987da915Sopenharmony_ci#include "config.h" 25987da915Sopenharmony_ci#endif 26987da915Sopenharmony_ci 27987da915Sopenharmony_ci#ifdef HAVE_STDLIB_H 28987da915Sopenharmony_ci#include <stdlib.h> 29987da915Sopenharmony_ci#endif 30987da915Sopenharmony_ci#ifdef HAVE_STRING_H 31987da915Sopenharmony_ci#include <string.h> 32987da915Sopenharmony_ci#endif 33987da915Sopenharmony_ci 34987da915Sopenharmony_ci#include "types.h" 35987da915Sopenharmony_ci#include "misc.h" 36987da915Sopenharmony_ci#include "logging.h" 37987da915Sopenharmony_ci 38987da915Sopenharmony_ci/** 39987da915Sopenharmony_ci * ntfs_calloc 40987da915Sopenharmony_ci * 41987da915Sopenharmony_ci * Return a pointer to the allocated memory or NULL if the request fails. 42987da915Sopenharmony_ci */ 43987da915Sopenharmony_civoid *ntfs_calloc(size_t size) 44987da915Sopenharmony_ci{ 45987da915Sopenharmony_ci void *p; 46987da915Sopenharmony_ci 47987da915Sopenharmony_ci p = calloc(1, size); 48987da915Sopenharmony_ci if (!p) 49987da915Sopenharmony_ci ntfs_log_perror("Failed to calloc %lld bytes", (long long)size); 50987da915Sopenharmony_ci return p; 51987da915Sopenharmony_ci} 52987da915Sopenharmony_ci 53987da915Sopenharmony_civoid *ntfs_malloc(size_t size) 54987da915Sopenharmony_ci{ 55987da915Sopenharmony_ci void *p; 56987da915Sopenharmony_ci 57987da915Sopenharmony_ci p = malloc(size); 58987da915Sopenharmony_ci if (!p) 59987da915Sopenharmony_ci ntfs_log_perror("Failed to malloc %lld bytes", (long long)size); 60987da915Sopenharmony_ci return p; 61987da915Sopenharmony_ci} 62987da915Sopenharmony_ci 63987da915Sopenharmony_civoid *ntfs_realloc(void *ptr, size_t size) 64987da915Sopenharmony_ci{ 65987da915Sopenharmony_ci void *p; 66987da915Sopenharmony_ci 67987da915Sopenharmony_ci p = realloc(ptr, size); 68987da915Sopenharmony_ci if (!p) 69987da915Sopenharmony_ci ntfs_log_perror("Failed to realloc %lld bytes", 70987da915Sopenharmony_ci (long long)size); 71987da915Sopenharmony_ci return p; 72987da915Sopenharmony_ci} 73987da915Sopenharmony_ci 74987da915Sopenharmony_civoid ntfs_free(void *p) 75987da915Sopenharmony_ci{ 76987da915Sopenharmony_ci free(p); 77987da915Sopenharmony_ci} 78