|
@@ -885,7 +885,6 @@ extern "C" {
|
|
|
ENET_API ENetPacket * enet_packet_create (const void *, size_t, enet_uint32);
|
|
|
ENET_API ENetPacket * enet_packet_create_offset (const void *, size_t, size_t, enet_uint32);
|
|
|
ENET_API void enet_packet_destroy (ENetPacket *);
|
|
|
- ENET_API int enet_packet_resize (ENetPacket *, size_t);
|
|
|
ENET_API enet_uint32 enet_crc32 (const ENetBuffer *, size_t);
|
|
|
|
|
|
ENET_API ENetHost * enet_host_create (const ENetAddress *, size_t, size_t, enet_uint32, enet_uint32);
|
|
@@ -1251,23 +1250,23 @@ extern "C" {
|
|
|
* @returns the packet on success, NULL on failure
|
|
|
*/
|
|
|
ENetPacket *enet_packet_create(const void *data, size_t dataLength, enet_uint32 flags) {
|
|
|
- ENetPacket *packet = (ENetPacket *)enet_malloc(sizeof(ENetPacket));
|
|
|
-
|
|
|
- if (packet == NULL) {
|
|
|
- return NULL;
|
|
|
- }
|
|
|
-
|
|
|
+ ENetPacket *packet;
|
|
|
if (flags & ENET_PACKET_FLAG_NO_ALLOCATE) {
|
|
|
+ packet = (ENetPacket *)enet_malloc(sizeof (ENetPacket));
|
|
|
+ if (packet == NULL) {
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
packet->data = (enet_uint8 *)data;
|
|
|
- } else if (dataLength <= 0) {
|
|
|
- packet->data = NULL;
|
|
|
- } else {
|
|
|
- packet->data = (enet_uint8 *)enet_malloc(dataLength);
|
|
|
- if (packet->data == NULL) {
|
|
|
- enet_free(packet);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ packet = (ENetPacket *)enet_malloc(sizeof (ENetPacket) + dataLength);
|
|
|
+ if (packet == NULL) {
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
+ packet->data = (enet_uint8 *)packet + sizeof(ENetPacket);
|
|
|
+
|
|
|
if (data != NULL) {
|
|
|
memcpy(packet->data, data, dataLength);
|
|
|
}
|
|
@@ -1283,24 +1282,23 @@ extern "C" {
|
|
|
}
|
|
|
|
|
|
ENetPacket *enet_packet_create_offset(const void *data, size_t dataLength, size_t dataOffset, enet_uint32 flags) {
|
|
|
- ENetPacket *packet = (ENetPacket *)enet_malloc(sizeof(ENetPacket));
|
|
|
-
|
|
|
- if (packet == NULL) {
|
|
|
- return NULL;
|
|
|
- }
|
|
|
-
|
|
|
+ ENetPacket *packet;
|
|
|
if (flags & ENET_PACKET_FLAG_NO_ALLOCATE) {
|
|
|
- packet->data = (enet_uint8 *)data;
|
|
|
- } else if ((dataLength + dataOffset) <= 0) {
|
|
|
- packet->data = NULL;
|
|
|
- } else {
|
|
|
- packet->data = (enet_uint8 *)enet_malloc(dataLength + dataOffset);
|
|
|
+ packet = (ENetPacket *)enet_malloc(sizeof (ENetPacket));
|
|
|
+ if (packet == NULL) {
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
|
|
|
- if (packet->data == NULL) {
|
|
|
- enet_free(packet);
|
|
|
+ packet->data = (enet_uint8 *)data;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ packet = (ENetPacket *)enet_malloc(sizeof (ENetPacket) + dataLength + dataOffset);
|
|
|
+ if (packet == NULL) {
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
+ packet->data = (enet_uint8 *)packet + sizeof(ENetPacket);
|
|
|
+
|
|
|
if (data != NULL) {
|
|
|
memcpy(packet->data + dataOffset, data, dataLength);
|
|
|
}
|
|
@@ -1328,41 +1326,9 @@ extern "C" {
|
|
|
(*packet->freeCallback)((void *)packet);
|
|
|
}
|
|
|
|
|
|
- if (!(packet->flags & ENET_PACKET_FLAG_NO_ALLOCATE) && packet->data != NULL) {
|
|
|
- enet_free(packet->data);
|
|
|
- }
|
|
|
-
|
|
|
enet_free(packet);
|
|
|
}
|
|
|
|
|
|
- /** Attempts to resize the data in the packet to length specified in the
|
|
|
- * dataLength parameter
|
|
|
- * @param packet packet to resize
|
|
|
- * @param dataLength new size for the packet data
|
|
|
- * @returns 0 on success, < 0 on failure
|
|
|
- */
|
|
|
- int enet_packet_resize(ENetPacket *packet, size_t dataLength) {
|
|
|
- enet_uint8 *newData;
|
|
|
-
|
|
|
- if (dataLength <= packet->dataLength || (packet->flags & ENET_PACKET_FLAG_NO_ALLOCATE)) {
|
|
|
- packet->dataLength = dataLength;
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- newData = (enet_uint8 *)enet_malloc(dataLength);
|
|
|
- if (newData == NULL) {
|
|
|
- return -1;
|
|
|
- }
|
|
|
-
|
|
|
- memcpy(newData, packet->data, packet->dataLength);
|
|
|
- enet_free(packet->data);
|
|
|
-
|
|
|
- packet->data = newData;
|
|
|
- packet->dataLength = dataLength;
|
|
|
-
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
static int initializedCRC32 = 0;
|
|
|
static enet_uint32 crcTable[256];
|
|
|
|