From e9f582ae978c5c1b6f2dea9bd9466f37fcb0564c Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 28 Jun 2002 01:43:32 +0000 Subject: [PATCH] make getting a list of strings work right --- src/XAtom.cc | 16 ++++++++-------- src/XAtom.hh | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/XAtom.cc b/src/XAtom.cc index 5945b833..62a8f710 100644 --- a/src/XAtom.cc +++ b/src/XAtom.cc @@ -434,7 +434,7 @@ bool XAtom::getValue(Window win, Atoms atom, Atoms type, */ bool XAtom::getValue(Window win, Atoms atom, StringType type, std::string &value) const { - int n = 1; + unsigned long n = 1; StringVect s; if (getValue(win, atom, type, n, s)) { value = s[0]; @@ -444,8 +444,8 @@ bool XAtom::getValue(Window win, Atoms atom, StringType type, } -bool XAtom::getValue(Window win, Atoms atom, StringType type, int &nelements, - StringVect &strings) const { +bool XAtom::getValue(Window win, Atoms atom, StringType type, + unsigned long &nelements, StringVect &strings) const { assert(atom >= 0 && atom < NUM_ATOMS); assert(type >= 0 && type < NUM_STRING_TYPE); assert(win != None); assert(_atoms[atom] != None); @@ -463,22 +463,22 @@ bool XAtom::getValue(Window win, Atoms atom, StringType type, int &nelements, if (!getValue(win, _atoms[atom], t, elements, &value, 8) || elements < 1) return false; - std::string s(reinterpret_cast(value)); + std::string s(reinterpret_cast(value), elements); delete [] value; std::string::const_iterator it = s.begin(), end = s.end(); - int num = 0; + unsigned long num = 0; while(num < nelements) { std::string::const_iterator tmp = it; // current string.begin() it = std::find(tmp, end, '\0'); // look for null between tmp and end strings.push_back(std::string(tmp, it)); // s[tmp:it) - if (it == end) - break; + if (it == end) break; ++it; + if (it == end) break; ++num; } - nelements = elements; + nelements = num; return true; } diff --git a/src/XAtom.hh b/src/XAtom.hh index 839951a8..f4474a4a 100644 --- a/src/XAtom.hh +++ b/src/XAtom.hh @@ -207,7 +207,7 @@ public: bool getValue(Window win, Atoms atom, StringType type, std::string &value) const; bool getValue(Window win, Atoms atom, StringType type, - int &nelements, StringVect &strings) const; + unsigned long &nelements, StringVect &strings) const; void eraseValue(Window win, Atoms atom) const; -- 2.44.0