Fixed range delete bug and did some minor code cleanup.
This commit is contained in:
@@ -110,27 +110,17 @@ void TStringRemoveRange(int startIndex, int count, TString* string) {
|
|||||||
|
|
||||||
for (glyphCount = 0; glyphCount < count; glyphCount++) endByte += GetGlyphByteWidth(string->Characters[endByte]);
|
for (glyphCount = 0; glyphCount < count; glyphCount++) endByte += GetGlyphByteWidth(string->Characters[endByte]);
|
||||||
|
|
||||||
if (endByte == string->ByteCount) {
|
|
||||||
memset(&string->Characters[startByte], '\0', endByte - startByte);
|
|
||||||
string->Length -= glyphCount;
|
|
||||||
string->ByteCount -= endByte - startByte;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int fullBuffers = (string->ByteCount - endByte) / sizeof buffer;
|
unsigned int fullBuffers = (string->ByteCount - endByte) / sizeof buffer;
|
||||||
unsigned int remainder = (string->ByteCount - endByte) - fullBuffers * sizeof buffer;
|
unsigned int remainder = (string->ByteCount - endByte) - fullBuffers * sizeof buffer;
|
||||||
printf("Remainder: %d; full buffers: %d; endbyte : %d\n", remainder, fullBuffers, endByte);
|
|
||||||
|
|
||||||
for (int i = 0; i < fullBuffers; i++) {
|
for (int i = 0; i < fullBuffers; i++) {
|
||||||
memcpy(buffer, &string->Characters[endByte + i * sizeof buffer], sizeof buffer);
|
memcpy(buffer, &string->Characters[endByte + i * sizeof buffer], sizeof buffer);
|
||||||
printf("Buffer: %s\n", buffer);
|
|
||||||
memcpy(&string->Characters[startByte + sizeof buffer * i], buffer, sizeof buffer);
|
memcpy(&string->Characters[startByte + sizeof buffer * i], buffer, sizeof buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
memset(buffer, 0, sizeof buffer);
|
memset(buffer, 0, sizeof buffer);
|
||||||
memcpy(buffer, &string->Characters[string->ByteCount - remainder], remainder);
|
memcpy(buffer, &string->Characters[string->ByteCount - remainder], remainder);
|
||||||
printf("Buffer: %s\n", buffer);
|
|
||||||
memcpy(&string->Characters[startByte + fullBuffers * sizeof buffer], buffer, remainder);
|
memcpy(&string->Characters[startByte + fullBuffers * sizeof buffer], buffer, remainder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user