TRACE("(%p, %d, %p)\n", hCtx, cMaxPkts, lpPkts);
- if (!hCtx || !lpPkts) return 0;
+ if (!hCtx)
+ return 0;
EnterCriticalSection(&csTablet);
context = TABLET_FindOpenContext(hCtx);
- TABLET_BlankPacketData(context,lpPkts,cMaxPkts);
+
+ if (lpPkts != NULL)
+ TABLET_BlankPacketData(context,lpPkts,cMaxPkts);
if (context->PacketsQueued == 0)
{
return 0;
}
- for(limit = 0; limit < cMaxPkts && limit < context->PacketsQueued; limit++)
- ptr=TABLET_CopyPacketData(context ,ptr, &context->PacketQueue[limit]);
+ limit = min(cMaxPkts,context->PacketsQueued);
+
+ if(ptr != NULL)
+ {
+ int i = 0;
+ for(i = 0; i < limit; i++)
+ ptr=TABLET_CopyPacketData(context ,ptr, &context->PacketQueue[i]);
+ }
+
if (limit < context->PacketsQueued)
{
- memcpy(context->PacketQueue, &context->PacketQueue[limit],
- (context->QueueSize - (limit))*sizeof(WTPACKET));
+ memmove(context->PacketQueue, &context->PacketQueue[limit],
+ (context->PacketsQueued - (limit))*sizeof(WTPACKET));
}
context->PacketsQueued -= limit;
LeaveCriticalSection(&csTablet);
TRACE("(%p, %d, %p)\n", hCtx, wSerial, lpPkt);
- if (!hCtx) return 0;
+ if (!hCtx)
+ return 0;
EnterCriticalSection(&csTablet);
if ((rc+1) < context->QueueSize)
{
- memcpy(context->PacketQueue, &context->PacketQueue[rc+1],
- (context->QueueSize - (rc+1))*sizeof(WTPACKET));
+ memmove(context->PacketQueue, &context->PacketQueue[rc+1],
+ (context->PacketsQueued - (rc+1))*sizeof(WTPACKET));
}
context->PacketsQueued -= (rc+1);
}
EnterCriticalSection(&csTablet);
context = TABLET_FindOpenContext(hCtx);
- memcpy(lpLogCtx,&context->context,sizeof(LOGCONTEXTA));
+ memmove(lpLogCtx,&context->context,sizeof(LOGCONTEXTA));
LeaveCriticalSection(&csTablet);
return TRUE;
}
for (num = bgn; num <= end; num++)
- ptr = TABLET_CopyPacketData(context ,ptr, &context->PacketQueue[end]);
+ ptr = TABLET_CopyPacketData(context ,ptr, &context->PacketQueue[num]);
/* remove read packets */
if ((end+1) < context->PacketsQueued)
- memcpy( &context->PacketQueue[bgn], &context->PacketQueue[end+1],
- (context->PacketsQueued - ((end-bgn)+1)) * sizeof (WTPACKET));
+ memmove( &context->PacketQueue[bgn], &context->PacketQueue[end+1],
+ (context->PacketsQueued - (end+1)) * sizeof (WTPACKET));
context->PacketsQueued -= ((end-bgn)+1);
*lpNPkts = ((end-bgn)+1);
TRACE("(%p, %u, %u, %d, %p, %p)\n",
hCtx, wBegin, wEnd, cMaxPkts, lpPkts, lpNPkts);
- if (!hCtx) return 0;
+ if (!hCtx || !lpPkts) return 0;
EnterCriticalSection(&csTablet);
}
for (num = bgn; num <= end; num++)
- ptr = TABLET_CopyPacketData(context ,ptr, &context->PacketQueue[end]);
+ ptr = TABLET_CopyPacketData(context ,ptr, &context->PacketQueue[num]);
*lpNPkts = ((end-bgn)+1);
LeaveCriticalSection(&csTablet);