X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FIPStack%2Flink.c;h=afd54eb1dca730467e4aa19a82faeb79a11012ea;hb=25f7e9ab0f31ca486c0c981a406d381e160637a4;hp=8316b638c7404a2a2d7cbd694f7e0c67c8d15d29;hpb=586a47ab9343a85c944a2cf7b27a74cf459a8423;p=tpg%2Facess2.git diff --git a/Modules/IPStack/link.c b/Modules/IPStack/link.c index 8316b638..afd54eb1 100644 --- a/Modules/IPStack/link.c +++ b/Modules/IPStack/link.c @@ -17,6 +17,7 @@ void Link_WatchDevice(tAdapter *Adapter); // === GLOBALS === int giRegisteredTypes = 0; + int giRegisteredTypeSpace = 0; struct { Uint16 Type; tPacketCallback Callback; @@ -50,17 +51,18 @@ void Link_RegisterType(Uint16 Type, tPacketCallback Callback) if(i == -1) { - tmp = realloc(gaRegisteredTypes, (giRegisteredTypes+1)*sizeof(*gaRegisteredTypes)); + giRegisteredTypeSpace += 5; + tmp = realloc(gaRegisteredTypes, giRegisteredTypeSpace*sizeof(*gaRegisteredTypes)); if(!tmp) { Log_Warning("NET", "Out of heap space! (Attempted to allocate %i)", - (giRegisteredTypes+1)*sizeof(*gaRegisteredTypes) + giRegisteredTypeSpace*sizeof(*gaRegisteredTypes) ); return ; } + gaRegisteredTypes = tmp; i = giRegisteredTypes; giRegisteredTypes ++; - gaRegisteredTypes = tmp; } gaRegisteredTypes[i].Callback = Callback;