mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-22 22:28:02 +01:00
Fixed a really stupid crasing bug caused by those (unsigned char*) pointers
to data.
This commit is contained in:
21
WINGs/data.c
21
WINGs/data.c
@@ -170,9 +170,8 @@ WMSetDataLength(WMData *aData, unsigned length) /*FOLD00*/
|
||||
WMSetDataCapacity(aData, length);
|
||||
}
|
||||
if (length > aData->length) {
|
||||
unsigned char *dataBytes = (unsigned char *)aData->bytes;
|
||||
|
||||
memset(dataBytes + aData->length, 0, length - aData->length);
|
||||
memset((unsigned char*)aData->bytes + aData->length, 0,
|
||||
length - aData->length);
|
||||
}
|
||||
aData->length = length;
|
||||
}
|
||||
@@ -230,12 +229,11 @@ WMGetDataBytesWithLength(WMData *aData, void *buffer, unsigned length) /*FOLD00*
|
||||
void
|
||||
WMGetDataBytesWithRange(WMData *aData, void *buffer, WMRange aRange) /*FOLD00*/
|
||||
{
|
||||
unsigned char *dataBytes = (unsigned char *)aData->bytes;
|
||||
|
||||
wassertr(aRange.position < aData->length);
|
||||
wassertr(aRange.count <= aData->length-aRange.position);
|
||||
|
||||
memcpy(buffer,dataBytes + aRange.position, aRange.count);
|
||||
memcpy(buffer, (unsigned char*)aData->bytes + aRange.position,
|
||||
aRange.count);
|
||||
}
|
||||
|
||||
|
||||
@@ -285,7 +283,6 @@ WMAppendDataBytes(WMData *aData, void *bytes, unsigned length) /*FOLD00*/
|
||||
{
|
||||
unsigned oldLength = aData->length;
|
||||
unsigned newLength = oldLength + length;
|
||||
unsigned char *dataBytes = (unsigned char *)aData->bytes;
|
||||
|
||||
if (newLength > aData->capacity) {
|
||||
unsigned nextCapacity = aData->capacity + aData->growth;
|
||||
@@ -300,7 +297,7 @@ WMAppendDataBytes(WMData *aData, void *bytes, unsigned length) /*FOLD00*/
|
||||
WMSetDataCapacity(aData, nextCapacity);
|
||||
aData->growth = nextGrowth;
|
||||
}
|
||||
memcpy(dataBytes + oldLength, bytes, length);
|
||||
memcpy((unsigned char*)aData->bytes + oldLength, bytes, length);
|
||||
aData->length = newLength;
|
||||
}
|
||||
|
||||
@@ -319,24 +316,20 @@ WMAppendData(WMData *aData, WMData *anotherData) /*FOLD00*/
|
||||
void
|
||||
WMReplaceDataBytesInRange(WMData *aData, WMRange aRange, void *bytes) /*FOLD00*/
|
||||
{
|
||||
unsigned char *dataBytes = (unsigned char *)aData->bytes;
|
||||
|
||||
wassertr(aRange.position < aData->length);
|
||||
wassertr(aRange.count <= aData->length-aRange.position);
|
||||
|
||||
memcpy(dataBytes + aRange.position, bytes, aRange.count);
|
||||
memcpy((unsigned char*)aData->bytes + aRange.position, bytes, aRange.count);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMResetDataBytesInRange(WMData *aData, WMRange aRange) /*FOLD00*/
|
||||
{
|
||||
unsigned char *dataBytes = (unsigned char *)aData->bytes;
|
||||
|
||||
wassertr(aRange.position < aData->length);
|
||||
wassertr(aRange.count <= aData->length-aRange.position);
|
||||
|
||||
memset(dataBytes + aRange.position, 0, aRange.count);
|
||||
memset((unsigned char*)aData->bytes + aRange.position, 0, aRange.count);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user