Comments (1)
I have a fix, but not a fully one, because of that also no pull-request. First a test to verify the behaviour:
add this to TestVector:
// Issue #524 check
{
struct S {
std::string s;
};
{
S s = {"Hello World!"};
eastl::vector<S> v;
v.pushBack(s);
v.pushBack(v.back());
VERIFY(v[0].s.compare("Hello World!") == 0);
VERIFY(v[1].s.compare("Hello World!") == 0);
VERIFY(v.size()==2);
}
}
the fix is (approx line 1946 in vector.h):
//here #524 is fixed!
::new((void*)(pNewData+(mpEnd-mpBegin))) value_type(eastl::forward<Args>(args)...); //first construct the new element in the destination buffer because the source might get moved away by the next line
pointer pNewEnd = eastl::uninitializedMove_ptr_if_noexcept(mpBegin, mpEnd, pNewData); //and here copy the rest of the elements into the new buffer
pNewEnd++;
BUT this will only fix the issue if you have exceptions disabled, when they're enabled it's NOT fixed (and I'm not confident enough to also fix the behaviour here).
from eastl.
Related Issues (20)
- [MSVC][std:c++latest] EASTL build failed due to error C2666: 'TestLruCacheInternal::Foo::operator ==': overloaded functions have similar conversions HOT 2
- intrusive_slist is not implemented
- No signed tarball for releases
- Build with Clang15 results in warnings about deprecated builtins HOT 1
- Inquiry about the expected behavior of the comparison operators in RingBuffer HOT 1
- compilation error due to `std::remove_reference` HOT 5
- Tests fail to compile: error: use of undeclared identifier 'getpid'
- Tests fail to compile: error: use of undeclared identifier 'pthread_attr_get_np'
- Tests fail to link: ld: error: undefined symbol: EA::EAMain::InitializeSignalHandler()
- Consider using reset() for fast container teardown - Best pratices HOT 2
- emscripten support? HOT 1
- [Question] Should eastl::unordered_set.reserve not check if a change is required?
- Error of RBTreeDecrement function HOT 3
- Move semantic dosn't work with eastl::list HOT 2
- Overriding make_unique and default_delete HOT 2
- std::thread support HOT 1
- How to run unit tests HOT 2
- eastl::optional::value() casts away qualifiers [-Werror=cast-qual]
- Build Error for Windows ARM64 / ARM64EC (error C2011: 'uint128_t': 'struct' type redefinition)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from eastl.