tools/locale: Fix using auto_ptr to array.

Use BStackOrHeapArray instead of using auto_ptr to array.

Change-Id: I171cb002829c36ec51ba7d1e387869263e2a40f2
Reviewed-on: https://review.haiku-os.org/745
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
This commit is contained in:
Murai Takashi 2018-11-26 06:26:42 +09:00 committed by waddlesplash
parent 6439130107
commit 4c5e5d8b04
3 changed files with 48 additions and 8 deletions

View File

@ -0,0 +1,43 @@
/*
* Copyright 2012, Jonathan Schleifer <js@webkeks.org>. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _SUPPORT_STACKORHEAPARRAY_H
#define _SUPPORT_STACKORHEAPARRAY_H
#include <cstddef>
#include <new>
template <typename Type, int StackSize>
class BStackOrHeapArray {
public:
BStackOrHeapArray(size_t count)
{
if (count > StackSize)
fData = new(std::nothrow) Type[count];
else
fData = fStackData;
}
~BStackOrHeapArray()
{
if (fData != fStackData)
delete[] fData;
}
bool IsValid() const
{
return fData != NULL;
}
operator Type*()
{
return fData;
}
private:
Type fStackData[StackSize];
Type* fData;
};
#endif

View File

@ -8,7 +8,6 @@
*/
#include <memory>
#include <new>
#include <syslog.h>
@ -24,6 +23,7 @@
#include <Path.h>
#include <Resources.h>
#include <Roster.h>
#include <StackOrHeapArray.h>
#include <DefaultCatalog.h>
#include <LocaleRoster.h>
@ -32,7 +32,6 @@
using BPrivate::DefaultCatalog;
using std::auto_ptr;
/*! This file implements the default catalog-type for the opentracker locale
@ -150,12 +149,12 @@ DefaultCatalog::ReadFromFile(const char *path)
return res;
}
auto_ptr<char> buf(new(std::nothrow) char [sz]);
if (buf.get() == NULL) {
BStackOrHeapArray<char, 0> buf(sz);
if (!buf.IsValid()) {
fprintf(stderr, "couldn't allocate array of %Ld chars\n", sz);
return B_NO_MEMORY;
}
res = catalogFile.Read(buf.get(), sz);
res = catalogFile.Read(buf, sz);
if (res < B_OK) {
fprintf(stderr, "couldn't read from catalog-file %s\n", path);
return res;
@ -166,7 +165,7 @@ DefaultCatalog::ReadFromFile(const char *path)
path);
return res;
}
BMemoryIO memIO(buf.get(), sz);
BMemoryIO memIO(buf, sz);
res = Unflatten(&memIO);
if (res == B_OK) {

View File

@ -9,7 +9,6 @@
#include <cstdio>
#include <iostream>
#include <fstream>
#include <memory>
#include <new>
#include <sstream>
#include <string>
@ -32,7 +31,6 @@
using BPrivate::PlainTextCatalog;
using std::auto_ptr;
using std::min;
using std::max;
using std::pair;