home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tlx501.zip / SRC / STRDUPNW.CPP < prev    next >
C/C++ Source or Header  |  1996-07-08  |  2KB  |  71 lines

  1. /****************************************************************************
  2.     $Id: strdupnw.cpp 501.0 1995/03/07 12:26:24 RON Exp $
  3.  
  4.     Copyright (c) 1991-95 Tarma Software Research. All rights reserved.
  5.  
  6.     Project:    Tarma Library for C++ V5.0
  7.     Author:    Ron van der Wal
  8.  
  9.     Implementation of tlStrDup().
  10.  
  11.     $Log: strdupnw.cpp $
  12.     Revision 501.0  1995/03/07 12:26:24  RON
  13.     Updated for TLX 5.01
  14.     Revision 1.8  1995/01/31 16:30:28  RON
  15.     Update for release 012
  16.     Added partial support for SunPro C++ compiler
  17.     Revision 1.7  1995/01/06  15:58:30  ron
  18.     Corrected Revision keyword
  19.  
  20.     Revision 1.6  1994/11/16  15:43:49  ron
  21.     Added module info; rearranged #include directives
  22.  
  23.     Revision 1.5  1994/10/05  18:43:22  ron
  24.     Renamed TLx...() functions to tl...()
  25.  
  26.     Revision 1.4  1994/09/28  14:22:40  ron
  27.     Removed Macintosh-style #include references
  28.  
  29.     Revision 1.3  1994/09/27  20:23:06  ron
  30.     Changed path separator from / to \
  31.  
  32.     Revision 1.2  1994/09/26  15:48:02  ron
  33.     Changed include file references
  34.  
  35.     Revision 1.1  1994/08/16  18:13:15  ron
  36.     Initial revision
  37.  
  38. ****************************************************************************/
  39.  
  40. #include <tlx\501\_build.h>
  41.  
  42. TLX_MODULE_INFO("$Revision: 501.0 $");
  43.  
  44. #include <string.h>
  45. #include <tlx\501\except.h>        // Exception handling
  46.  
  47. /*-------------------------------------------------------------------------*/
  48.     char * _TLXFUNC tlStrDup(const char *s, size_t extra)
  49.  
  50. /*  Same as C/C++ function strdup(), but uses 'operator new' for
  51.     allocations rather than malloc(). This ensures that allocated strings
  52.     can be deleted through 'operator delete' instead of free().
  53.  
  54.     As an extra, this function allows the specification of a number of
  55.     bytes to allocate in excess of the original string.
  56.  
  57.     Returns pointer to the newly allocated string.
  58. ---------------------------------------------------------------------------*/
  59. {
  60.     TLX_ASSERT_PTR(s);
  61.  
  62.     size_t alloclen = strlen(s) + extra + 1;
  63.     char *result   = new char[alloclen];
  64.  
  65.     if (!result)
  66.     THROW(TLXAlloc(LOCUS, alloclen));
  67.  
  68.     strcpy(result, s);
  69.     return result;
  70. }
  71.