On Wed, 22 Dec 2004, Gary Setter wrote:
<snip>const char empty_str[1]; ^^^^^^^^^<snip> My cheap fix was to change the definition to of empty_str to const char *empty_str; and initialize it to empty string in the constructors. StringMap() : empty_str("") {} StringMap(const StringMap & other) : empty_str("") {copy(other);}
But the real question is, why do we need this?
It was a memory optimization that most likely isn't worth it. The attached patch removes empty_str and replaces it with "".
Index: common/string_map.hpp
===================================================================
RCS file: /cvsroot/aspell/aspell/common/string_map.hpp,v
retrieving revision 1.7
diff -u -r1.7 string_map.hpp
--- common/string_map.hpp 17 Jun 2004 12:41:47 -0000 1.7
+++ common/string_map.hpp 2 Jan 2005 02:22:45 -0000
@@ -38,7 +38,6 @@
private:
HashTable<Parms> lookup_;
ObjStack buffer_;
- const char empty_str[1];
void copy(const StringMap & other);
@@ -46,8 +45,8 @@
public:
PosibErr<void> clear() {lookup_.clear(); buffer_.reset(); return no_err;}
- StringMap() : empty_str() {}
- StringMap(const StringMap & other) : empty_str() {copy(other);}
+ StringMap() {}
+ StringMap(const StringMap & other) {copy(other);}
StringMap & operator= (const StringMap & o) {clear(); copy(o); return *this;}
~StringMap() {}
@@ -76,7 +75,7 @@
pair<Iter_,bool> res = lookup_.insert(Value_(key,0));
if (res.second) {
res.first->first = buffer_.dup(key);
- res.first->second = empty_str;
+ res.first->second = "";
return true;
} else {
return false;
_______________________________________________ Aspell-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/aspell-devel
