only return as many as was requested

This commit is contained in:
Dana Jansens 2003-02-17 21:06:39 +00:00
parent 956ada0725
commit 1741bddecb

View file

@ -242,13 +242,12 @@ bool Property::get(Window win, Atom atom, Atom type, unsigned long *nelements,
// the number of longs that need to be retreived to get the property's // the number of longs that need to be retreived to get the property's
// entire value. The last + 1 is the first long that we retrieved above. // entire value. The last + 1 is the first long that we retrieved above.
int remain = (ret_bytes - 1)/sizeof(long) + 1 + 1; int remain = (ret_bytes - 1)/sizeof(long) + 1 + 1;
if (remain > size/8 * (signed)maxread) // dont get more than the max if (remain > size * (signed)maxread / 32) // dont get more than the max
remain = size/8 * (signed)maxread; remain = size * (signed)maxread / 32;
result = XGetWindowProperty(**display, win, atom, 0l, result = XGetWindowProperty(**display, win, atom, 0l,
remain, false, type, &ret_type, &ret_size, remain, false, type, &ret_type, &ret_size,
nelements, &ret_bytes, &c_val); nelements, &ret_bytes, &c_val);
ret = (result == Success && ret_type == type && ret_size == size && ret = (result == Success && ret_type == type && ret_size == size);
ret_bytes == 0);
/* /*
If the property has changed type/size, or has grown since our first If the property has changed type/size, or has grown since our first
read of it, then stop here and try again. If it shrank, then this will read of it, then stop here and try again. If it shrank, then this will