String move() and String(String &&rval) breaks operation of reserve()
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- cpp
- Ambito
- embedded-iot
Direzione di ricerca
Individua l'implementazione di String in C++11 ed esamina move(), operator=, il costruttore String(String &&rval) e il comportamento di reserve(). Verifica come si comporta una destinazione con memoria riservata durante uno spostamento, quindi conferma che il costruttore segue il percorso di spostamento previsto e che le stringhe sottoposte a spostamento rimangono valide.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When #if __cplusplus >= 201103L || defined(GXX_EXPERIMENTAL_CXX0X)
operator = uses move() to just update the buffer pointer of the destination
This ignores any reserve() the user has made to ensure the memory is not unnecessarily fragmented.
String(String &&rval) has a similar problem
move() should first check the capacity of the destination and if there is sufficient space copy the source to the destination
String(String &&rval) should use move()
A suggested move() is
void String::move(String &rhs) {
if (this != &rhs) {
if (capacity > rhs.size) {
copy(rhs.buffer,rhs.size);
} else {
free(buffer);
buffer = rhs.buffer;
len = rhs.len;
capacity = rhs.capacity;
}
rhs.buffer = NULL;
rhs.len = 0;
rhs.capacity = 0;
}
}
- Lingua principale
- C++
- Stelle
- 306
- Fork
- 150
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di arduino/ArduinoCore-API
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 25/100
arduino/ArduinoCore-API#261 ·
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 30/100
arduino/ArduinoCore-API#256 ·
-
enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
arduino/ArduinoCore-API#251 · 1 commento ·
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
arduino/ArduinoCore-API#250 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
arduino/ArduinoCore-API#249 ·
Tutte le issue di arduino/ArduinoCore-API
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
litertlm-android AAR ships no consumer ProGuard rules → "mid == null" SIGABRT in minified apps Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
Component: GLib
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
brave/brave-browser#59300 ·
-
Mute ydb/tests/functional/dstool/test_canonical_requests.py.Test.test_group_take_snapshot in main Apertaai_reviewed
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
ydb-platform/ydb#53974 · 3 commenti ·