1 Index: /icu/trunk/source/common/rbbi.cpp
2 ===================================================================
3 --- /icu/trunk/source/common/rbbi.cpp (revision 30203)
4 +++ /icu/trunk/source/common/rbbi.cpp (revision 30255)
7 // Clone the source BI into the caller-supplied buffer.
8 - // TODO: using an overloaded operator new to directly initialize the
9 - // copy in the user's buffer would be better, but it doesn't seem
10 - // to get along with namespaces. Investigate why.
12 - // The memcpy is only safe with an empty (default constructed)
13 - // break iterator. Use on others can screw up reference counts
14 - // to data. memcpy-ing objects is not really a good idea...
16 - RuleBasedBreakIterator localIter; // Empty break iterator, source for memcpy
17 - RuleBasedBreakIterator *clone = (RuleBasedBreakIterator *)buf;
18 - uprv_memcpy(clone, &localIter, sizeof(RuleBasedBreakIterator)); // init C++ gorp, BreakIterator base class part
19 - clone->init(); // Init RuleBasedBreakIterator part, (user default constructor)
20 - *clone = *this; // clone = the real BI we want.
21 + RuleBasedBreakIterator *clone = new(buf) RuleBasedBreakIterator(*this);
22 clone->fBufferClone = TRUE; // Flag to prevent deleting storage on close (From C code)