head 1.1; access; symbols pkgsrc-2026Q1:1.1.0.40 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.38 pkgsrc-2025Q4-base:1.1 pkgsrc-2025Q3:1.1.0.36 pkgsrc-2025Q3-base:1.1 pkgsrc-2025Q2:1.1.0.34 pkgsrc-2025Q2-base:1.1 pkgsrc-2025Q1:1.1.0.32 pkgsrc-2025Q1-base:1.1 pkgsrc-2024Q4:1.1.0.30 pkgsrc-2024Q4-base:1.1 pkgsrc-2024Q3:1.1.0.28 pkgsrc-2024Q3-base:1.1 pkgsrc-2024Q2:1.1.0.26 pkgsrc-2024Q2-base:1.1 pkgsrc-2024Q1:1.1.0.24 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.22 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.20 pkgsrc-2023Q3-base:1.1 pkgsrc-2023Q2:1.1.0.18 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.16 pkgsrc-2023Q1-base:1.1 pkgsrc-2022Q4:1.1.0.14 pkgsrc-2022Q4-base:1.1 pkgsrc-2022Q3:1.1.0.12 pkgsrc-2022Q3-base:1.1 pkgsrc-2022Q2:1.1.0.10 pkgsrc-2022Q2-base:1.1 pkgsrc-2022Q1:1.1.0.8 pkgsrc-2022Q1-base:1.1 pkgsrc-2021Q4:1.1.0.6 pkgsrc-2021Q4-base:1.1 pkgsrc-2021Q3:1.1.0.4 pkgsrc-2021Q3-base:1.1 pkgsrc-2021Q2:1.1.0.2 pkgsrc-2021Q2-base:1.1; locks; strict; comment @// @; 1.1 date 2021.06.10.12.48.49; author nia; state Exp; branches; next ; commitid Em8IzcSKkW6PkAWC; desc @@ 1.1 log @Make wm/blackbox the latest version, remove weird versioned packages concept ok'd by gutteridge @ text @$NetBSD: patch-src_Netclient.cpp,v 1.2 2015/11/17 15:59:13 he Exp $ Fix LP64 problem with the X11 protocol handling, from FreeBSD. --- src/Netclient.cpp.orig 2008-12-22 01:10:19.000000000 +0000 +++ src/Netclient.cpp @@@@ -141,6 +141,7 @@@@ bool Netclient::getValue(Window win, Ato int result; unsigned long maxread = nelements; bool ret = False; + int bsize; // try get the first element result = XGetWindowProperty(_display.XDisplay(), win, atom, 0l, 1l, False, @@@@ -149,18 +150,19 @@@@ bool Netclient::getValue(Window win, Ato ret = (result == Success && ret_type == type && ret_size == size && nelements > 0); if (ret) { + bsize = (size == 32) ? sizeof(long) : size/8; if (ret_bytes == 0 || maxread <= nelements) { // we got the whole property's value - *value = new unsigned char[nelements * size/8 + 1]; - memcpy(*value, c_val, nelements * size/8 + 1); + *value = new unsigned char[nelements * bsize + 1]; + memcpy(*value, c_val, nelements * bsize + 1); } else { // get the entire property since it is larger than one long XFree(c_val); // 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. int remain = (ret_bytes - 1)/sizeof(long) + 1 + 1; - if (remain > size/8 * (signed)maxread) // dont get more than the max - remain = size/8 * (signed)maxread; + if (remain > bsize * (signed)maxread) // dont get more than the max + remain = bsize * (signed)maxread; result = XGetWindowProperty(_display.XDisplay(), win, atom, 0l, remain, False, type, &ret_type, &ret_size, &nelements, &ret_bytes, &c_val); @@@@ -174,8 +176,8 @@@@ bool Netclient::getValue(Window win, Ato if (! ret) return getValue(win, atom, type, maxread, value, size); - *value = new unsigned char[nelements * size/8 + 1]; - memcpy(*value, c_val, nelements * size/8 + 1); + *value = new unsigned char[nelements * bsize + 1]; + memcpy(*value, c_val, nelements * bsize + 1); } } if (c_val) XFree(c_val); @