copy_string(aData, aData+aDataLength, buffer_ptr);
{ CharT* toBegin = buffer_ptr; copy_string(aData, aData+aDataLength, toBegin); }
nsChunkList<CharT>::NewChunk( const CharT* aData, PRUint32 aDataLength, PRUint32 aAdditionalSpace )  {    size_t    object_size    = ((sizeof(Chunk) + sizeof(CharT) - 1) / sizeof(CharT)) * sizeof(CharT);    PRUint32  buffer_length  = aDataLength + aAdditionalSpace;    size_t    buffer_size    = size_t(buffer_length) * sizeof(CharT);    void* object_ptr = operator new(object_size + buffer_size);    if ( object_ptr )      {        typedef CharT* CharT_ptr;        CharT* buffer_ptr = CharT_ptr(NS_STATIC_CAST(unsigned char*, object_ptr) + object_size);        if ( aDataLength )          copy_string(aData, aData+aDataLength, buffer_ptr);        return new (object_ptr) Chunk(buffer_ptr, buffer_length, aDataLength);      }    return 0;  }