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