memcpy(&size, xb, sizeof(int));
while (size > 0 && (size < xb_size) && (pos + size < xb_size)) {
- if (!strncmp((YCHAR *) (xb + pos + sizeof(int)), name, size)) {
+ if (!strncmp((YCHAR *) (xb + pos + sizeof(int)),
+ name, size)) {
if (exist_size)
*exist_size = size;
return pos;
}
pos += size;
- if (pos < xb_size - sizeof(int))
+ if (pos < xb_size - (int)sizeof(int))
memcpy(&size, xb + pos, sizeof(int));
else
size = 0;
memcpy(&size, xb + pos, sizeof(int));
while (size > 0 && (size < xb_size) && (pos + size < xb_size)) {
pos += size;
- if (pos < xb_size - sizeof(int))
+ if (pos < xb_size - (int)sizeof(int))
memcpy(&size, xb + pos, sizeof(int));
else
size = 0;
pos++;
size--;
+ /* If bsize is zero then this is a size query.
+ * Return the size, but don't copy.
+ */
+ if (!bsize)
+ return size;
+
if (size <= bsize) {
memcpy(buf, xb + pos, size);
return size;
int filled = 0;
memcpy(&size, xb + pos, sizeof(int));
- while (size > sizeof(int) &&
+ while (size > (int)sizeof(int) &&
size <= xb_size &&
(pos + size) < xb_size &&
!filled) {
filled = 1;
}
pos += size;
- if (pos < xb_size - sizeof(int))
+ if (pos < xb_size - (int)sizeof(int))
memcpy(&size, xb + pos, sizeof(int));
else
size = 0;