mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2025-05-02 13:47:56 +02:00
Fix erase, and small fixes for utf8, and parse_utf8.
This commit is contained in:
parent
19cb8ad6d8
commit
3dce2b69d9
@ -42,20 +42,16 @@ void String::erase(const char element) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void String::erase(const int start_index, const int length) {
|
void String::erase(const int start_index, const int length) {
|
||||||
|
ERR_FAIL_INDEX(start_index, _size);
|
||||||
|
|
||||||
int sil = start_index + length;
|
int sil = start_index + length;
|
||||||
|
|
||||||
ERR_FAIL_INDEX(sil, _size + 1);
|
if (sil > _size) {
|
||||||
|
sil = _size;
|
||||||
if (length >= _size) {
|
|
||||||
_size = 0;
|
|
||||||
_data[_size] = '\0';
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int j = start_index;
|
for (int i = start_index; i < _size; ++i) {
|
||||||
for (int i = sil; i < _size; ++i) {
|
_data[i] = _data[sil + i];
|
||||||
_data[j] = _data[i];
|
|
||||||
++j;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_size -= length;
|
_size -= length;
|
||||||
@ -1010,7 +1006,9 @@ bool String::parse_utf8(const char *p_utf8, int p_len) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
resize(str_size + 1);
|
ensure_capacity(str_size + 1);
|
||||||
|
_size = str_size;
|
||||||
|
|
||||||
char *dst = dataw();
|
char *dst = dataw();
|
||||||
dst[str_size] = 0;
|
dst[str_size] = 0;
|
||||||
|
|
||||||
@ -1113,7 +1111,8 @@ String String::utf8() const {
|
|||||||
return utf8s;
|
return utf8s;
|
||||||
}
|
}
|
||||||
|
|
||||||
utf8s.resize(fl + 1);
|
utf8s.ensure_capacity(fl + 1);
|
||||||
|
utf8s._size = fl;
|
||||||
uint8_t *cdst = (uint8_t *)utf8s.dataw();
|
uint8_t *cdst = (uint8_t *)utf8s.dataw();
|
||||||
|
|
||||||
#define APPEND_CHAR(m_c) *(cdst++) = m_c
|
#define APPEND_CHAR(m_c) *(cdst++) = m_c
|
||||||
|
Loading…
Reference in New Issue
Block a user