mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-23 06:38:05 +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);
|
WMSetDataCapacity(aData, length);
|
||||||
}
|
}
|
||||||
if (length > aData->length) {
|
if (length > aData->length) {
|
||||||
unsigned char *dataBytes = (unsigned char *)aData->bytes;
|
memset((unsigned char*)aData->bytes + aData->length, 0,
|
||||||
|
length - aData->length);
|
||||||
memset(dataBytes + aData->length, 0, length - aData->length);
|
|
||||||
}
|
}
|
||||||
aData->length = length;
|
aData->length = length;
|
||||||
}
|
}
|
||||||
@@ -230,12 +229,11 @@ WMGetDataBytesWithLength(WMData *aData, void *buffer, unsigned length) /*FOLD00*
|
|||||||
void
|
void
|
||||||
WMGetDataBytesWithRange(WMData *aData, void *buffer, WMRange aRange) /*FOLD00*/
|
WMGetDataBytesWithRange(WMData *aData, void *buffer, WMRange aRange) /*FOLD00*/
|
||||||
{
|
{
|
||||||
unsigned char *dataBytes = (unsigned char *)aData->bytes;
|
|
||||||
|
|
||||||
wassertr(aRange.position < aData->length);
|
wassertr(aRange.position < aData->length);
|
||||||
wassertr(aRange.count <= aData->length-aRange.position);
|
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 oldLength = aData->length;
|
||||||
unsigned newLength = oldLength + length;
|
unsigned newLength = oldLength + length;
|
||||||
unsigned char *dataBytes = (unsigned char *)aData->bytes;
|
|
||||||
|
|
||||||
if (newLength > aData->capacity) {
|
if (newLength > aData->capacity) {
|
||||||
unsigned nextCapacity = aData->capacity + aData->growth;
|
unsigned nextCapacity = aData->capacity + aData->growth;
|
||||||
@@ -300,7 +297,7 @@ WMAppendDataBytes(WMData *aData, void *bytes, unsigned length) /*FOLD00*/
|
|||||||
WMSetDataCapacity(aData, nextCapacity);
|
WMSetDataCapacity(aData, nextCapacity);
|
||||||
aData->growth = nextGrowth;
|
aData->growth = nextGrowth;
|
||||||
}
|
}
|
||||||
memcpy(dataBytes + oldLength, bytes, length);
|
memcpy((unsigned char*)aData->bytes + oldLength, bytes, length);
|
||||||
aData->length = newLength;
|
aData->length = newLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -319,24 +316,20 @@ WMAppendData(WMData *aData, WMData *anotherData) /*FOLD00*/
|
|||||||
void
|
void
|
||||||
WMReplaceDataBytesInRange(WMData *aData, WMRange aRange, void *bytes) /*FOLD00*/
|
WMReplaceDataBytesInRange(WMData *aData, WMRange aRange, void *bytes) /*FOLD00*/
|
||||||
{
|
{
|
||||||
unsigned char *dataBytes = (unsigned char *)aData->bytes;
|
|
||||||
|
|
||||||
wassertr(aRange.position < aData->length);
|
wassertr(aRange.position < aData->length);
|
||||||
wassertr(aRange.count <= aData->length-aRange.position);
|
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
|
void
|
||||||
WMResetDataBytesInRange(WMData *aData, WMRange aRange) /*FOLD00*/
|
WMResetDataBytesInRange(WMData *aData, WMRange aRange) /*FOLD00*/
|
||||||
{
|
{
|
||||||
unsigned char *dataBytes = (unsigned char *)aData->bytes;
|
|
||||||
|
|
||||||
wassertr(aRange.position < aData->length);
|
wassertr(aRange.position < aData->length);
|
||||||
wassertr(aRange.count <= aData->length-aRange.position);
|
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