mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-07 22:44:49 +00:00
ICU-8673 Get rid of memcpy() of an object in RuleBasedBreakIterator::createBufferClone()
X-SVN-Rev: 30255
This commit is contained in:
parent
fe56e19f40
commit
13af35adac
1 changed files with 1 additions and 12 deletions
|
@ -1565,19 +1565,8 @@ BreakIterator * RuleBasedBreakIterator::createBufferClone(void *stackBuffer,
|
|||
|
||||
//
|
||||
// Clone the source BI into the caller-supplied buffer.
|
||||
// TODO: using an overloaded operator new to directly initialize the
|
||||
// copy in the user's buffer would be better, but it doesn't seem
|
||||
// to get along with namespaces. Investigate why.
|
||||
//
|
||||
// The memcpy is only safe with an empty (default constructed)
|
||||
// break iterator. Use on others can screw up reference counts
|
||||
// to data. memcpy-ing objects is not really a good idea...
|
||||
//
|
||||
RuleBasedBreakIterator localIter; // Empty break iterator, source for memcpy
|
||||
RuleBasedBreakIterator *clone = (RuleBasedBreakIterator *)buf;
|
||||
uprv_memcpy(clone, &localIter, sizeof(RuleBasedBreakIterator)); // init C++ gorp, BreakIterator base class part
|
||||
clone->init(); // Init RuleBasedBreakIterator part, (user default constructor)
|
||||
*clone = *this; // clone = the real BI we want.
|
||||
RuleBasedBreakIterator *clone = new(buf) RuleBasedBreakIterator(*this);
|
||||
clone->fBufferClone = TRUE; // Flag to prevent deleting storage on close (From C code)
|
||||
|
||||
return clone;
|
||||
|
|
Loading…
Add table
Reference in a new issue