15569331642446be05292e3e1f8a51218827168cdclaireho/* 25569331642446be05292e3e1f8a51218827168cdclaireho * Copyright (C) 1998-2004 David Turner and Werner Lemberg 35569331642446be05292e3e1f8a51218827168cdclaireho * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 45569331642446be05292e3e1f8a51218827168cdclaireho * Copyright (C) 2007 Red Hat, Inc. 55569331642446be05292e3e1f8a51218827168cdclaireho * 65569331642446be05292e3e1f8a51218827168cdclaireho * This is part of HarfBuzz, an OpenType Layout engine library. 75569331642446be05292e3e1f8a51218827168cdclaireho * 85569331642446be05292e3e1f8a51218827168cdclaireho * Permission is hereby granted, without written agreement and without 95569331642446be05292e3e1f8a51218827168cdclaireho * license or royalty fees, to use, copy, modify, and distribute this 105569331642446be05292e3e1f8a51218827168cdclaireho * software and its documentation for any purpose, provided that the 115569331642446be05292e3e1f8a51218827168cdclaireho * above copyright notice and the following two paragraphs appear in 125569331642446be05292e3e1f8a51218827168cdclaireho * all copies of this software. 135569331642446be05292e3e1f8a51218827168cdclaireho * 145569331642446be05292e3e1f8a51218827168cdclaireho * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 155569331642446be05292e3e1f8a51218827168cdclaireho * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 165569331642446be05292e3e1f8a51218827168cdclaireho * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 175569331642446be05292e3e1f8a51218827168cdclaireho * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 185569331642446be05292e3e1f8a51218827168cdclaireho * DAMAGE. 195569331642446be05292e3e1f8a51218827168cdclaireho * 205569331642446be05292e3e1f8a51218827168cdclaireho * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 215569331642446be05292e3e1f8a51218827168cdclaireho * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 225569331642446be05292e3e1f8a51218827168cdclaireho * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 235569331642446be05292e3e1f8a51218827168cdclaireho * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 245569331642446be05292e3e1f8a51218827168cdclaireho * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 255569331642446be05292e3e1f8a51218827168cdclaireho * 265569331642446be05292e3e1f8a51218827168cdclaireho * Red Hat Author(s): Behdad Esfahbod 275569331642446be05292e3e1f8a51218827168cdclaireho */ 285569331642446be05292e3e1f8a51218827168cdclaireho 295569331642446be05292e3e1f8a51218827168cdclaireho#include "harfbuzz-impl.h" 305569331642446be05292e3e1f8a51218827168cdclaireho 315569331642446be05292e3e1f8a51218827168cdclaireho 325569331642446be05292e3e1f8a51218827168cdclairehoHB_INTERNAL HB_Pointer 335569331642446be05292e3e1f8a51218827168cdclaireho_hb_alloc(size_t size, 345569331642446be05292e3e1f8a51218827168cdclaireho HB_Error *perror ) 355569331642446be05292e3e1f8a51218827168cdclaireho{ 365569331642446be05292e3e1f8a51218827168cdclaireho HB_Error error = (HB_Error)0; 375569331642446be05292e3e1f8a51218827168cdclaireho HB_Pointer block = NULL; 385569331642446be05292e3e1f8a51218827168cdclaireho 395569331642446be05292e3e1f8a51218827168cdclaireho if ( size > 0 ) 405569331642446be05292e3e1f8a51218827168cdclaireho { 415569331642446be05292e3e1f8a51218827168cdclaireho block = calloc( 1, size ); 425569331642446be05292e3e1f8a51218827168cdclaireho if ( !block ) 435569331642446be05292e3e1f8a51218827168cdclaireho error = ERR(HB_Err_Out_Of_Memory); 445569331642446be05292e3e1f8a51218827168cdclaireho } 455569331642446be05292e3e1f8a51218827168cdclaireho 465569331642446be05292e3e1f8a51218827168cdclaireho *perror = error; 475569331642446be05292e3e1f8a51218827168cdclaireho return block; 485569331642446be05292e3e1f8a51218827168cdclaireho} 495569331642446be05292e3e1f8a51218827168cdclaireho 505569331642446be05292e3e1f8a51218827168cdclaireho 515569331642446be05292e3e1f8a51218827168cdclairehoHB_INTERNAL HB_Pointer 525569331642446be05292e3e1f8a51218827168cdclaireho_hb_realloc(HB_Pointer block, 535569331642446be05292e3e1f8a51218827168cdclaireho size_t new_size, 545569331642446be05292e3e1f8a51218827168cdclaireho HB_Error *perror ) 555569331642446be05292e3e1f8a51218827168cdclaireho{ 565569331642446be05292e3e1f8a51218827168cdclaireho HB_Pointer block2 = NULL; 575569331642446be05292e3e1f8a51218827168cdclaireho HB_Error error = (HB_Error)0; 585569331642446be05292e3e1f8a51218827168cdclaireho 595569331642446be05292e3e1f8a51218827168cdclaireho block2 = realloc( block, new_size ); 605569331642446be05292e3e1f8a51218827168cdclaireho if ( block2 == NULL && new_size != 0 ) 615569331642446be05292e3e1f8a51218827168cdclaireho error = ERR(HB_Err_Out_Of_Memory); 625569331642446be05292e3e1f8a51218827168cdclaireho 635569331642446be05292e3e1f8a51218827168cdclaireho if ( !error ) 645569331642446be05292e3e1f8a51218827168cdclaireho block = block2; 655569331642446be05292e3e1f8a51218827168cdclaireho 665569331642446be05292e3e1f8a51218827168cdclaireho *perror = error; 675569331642446be05292e3e1f8a51218827168cdclaireho return block; 685569331642446be05292e3e1f8a51218827168cdclaireho} 695569331642446be05292e3e1f8a51218827168cdclaireho 705569331642446be05292e3e1f8a51218827168cdclaireho 715569331642446be05292e3e1f8a51218827168cdclairehoHB_INTERNAL void 725569331642446be05292e3e1f8a51218827168cdclaireho_hb_free( HB_Pointer block ) 735569331642446be05292e3e1f8a51218827168cdclaireho{ 745569331642446be05292e3e1f8a51218827168cdclaireho if ( block ) 755569331642446be05292e3e1f8a51218827168cdclaireho free( block ); 765569331642446be05292e3e1f8a51218827168cdclaireho} 775569331642446be05292e3e1f8a51218827168cdclaireho 785569331642446be05292e3e1f8a51218827168cdclaireho 795569331642446be05292e3e1f8a51218827168cdclaireho/* helper func to set a breakpoint on */ 805569331642446be05292e3e1f8a51218827168cdclairehoHB_INTERNAL HB_Error 815569331642446be05292e3e1f8a51218827168cdclaireho_hb_err (HB_Error code) 825569331642446be05292e3e1f8a51218827168cdclaireho{ 835569331642446be05292e3e1f8a51218827168cdclaireho return code; 845569331642446be05292e3e1f8a51218827168cdclaireho} 85