diff options
author | Thomas Grill <xovo@users.sourceforge.net> | 2005-12-14 01:53:02 +0000 |
---|---|---|
committer | Thomas Grill <xovo@users.sourceforge.net> | 2005-12-14 01:53:02 +0000 |
commit | 59ad9e9cf0a72b31f8bfd371cb97536ed4d4fe61 (patch) | |
tree | d424023df43b0a5649bf93b025338f8b76bce244 /externals/grill/pool | |
parent | de76301bb4d17339e4eb6eb31abf53ede4734e1e (diff) |
fixed double-free on clearing values and dirs
reintroduced missing help message
fixed clearing values and dirs, e.g. with messages clrall and clrrec
more symbol escaping
rename help file
svn path=/trunk/; revision=4208
Diffstat (limited to 'externals/grill/pool')
-rw-r--r-- | externals/grill/pool/pool-help.pd | 14 | ||||
-rw-r--r-- | externals/grill/pool/pool.vcproj | 4 | ||||
-rw-r--r-- | externals/grill/pool/readme.txt | 2 | ||||
-rw-r--r-- | externals/grill/pool/source/main.cpp | 8 | ||||
-rw-r--r-- | externals/grill/pool/source/pool.cpp | 9 |
5 files changed, 25 insertions, 12 deletions
diff --git a/externals/grill/pool/pool-help.pd b/externals/grill/pool/pool-help.pd index ea6b64b8..0f3dfa9c 100644 --- a/externals/grill/pool/pool-help.pd +++ b/externals/grill/pool/pool-help.pd @@ -1,4 +1,4 @@ -#N canvas 4 3 943 713 12;
+#N canvas 4 3 947 717 12;
#X msg 296 105 set 1 2 3;
#X obj 238 631 print K;
#X msg 607 211 getall;
@@ -225,8 +225,6 @@ the folder containing the current patcher will be used.; #X connect 2 0 0 0;
#X connect 8 0 0 0;
#X restore 717 659 pd print;
-#X text 272 13 a hierarchical storage object \, (C)2002-2004 Thomas
-Grill;
#X text 272 33 http://grrrr.org;
#X msg 428 225 geti \$1;
#X text 426 185 get indexed element;
@@ -237,6 +235,8 @@ Grill; #X msg 295 276 seti 3 Uhu;
#X text 424 343 clear value at index;
#X msg 425 363 clri 2;
+#X text 272 13 a hierarchical storage object \, (C)2002-2005 Thomas
+Grill;
#X connect 0 0 69 0;
#X connect 2 0 69 0;
#X connect 3 0 69 0;
@@ -272,7 +272,7 @@ Grill; #X connect 72 0 69 0;
#X connect 73 0 69 0;
#X connect 74 0 69 0;
-#X connect 80 0 69 0;
-#X connect 82 0 80 0;
-#X connect 85 0 69 0;
-#X connect 87 0 69 0;
+#X connect 79 0 69 0;
+#X connect 81 0 79 0;
+#X connect 84 0 69 0;
+#X connect 86 0 69 0;
diff --git a/externals/grill/pool/pool.vcproj b/externals/grill/pool/pool.vcproj index d1f6a34f..47a056a6 100644 --- a/externals/grill/pool/pool.vcproj +++ b/externals/grill/pool/pool.vcproj @@ -107,12 +107,12 @@ <Tool Name="VCLinkerTool" AdditionalDependencies="pd.lib" - OutputFile=".\pd-msvc/d/pool.dll" + OutputFile="$(outdir)/pool.dll" LinkIncremental="2" SuppressStartupBanner="TRUE" AdditionalLibraryDirectories="c:\data\pd\pd-cvs\bin" GenerateDebugInformation="TRUE" - ProgramDatabaseFile=".\pd-msvc/d/pool.pdb" + ProgramDatabaseFile="$(outdir)/pool.pdb" ImportLibrary=".\pd-msvc/d/pool.lib" TargetMachine="1"/> <Tool diff --git a/externals/grill/pool/readme.txt b/externals/grill/pool/readme.txt index 84d377ff..25cae32e 100644 --- a/externals/grill/pool/readme.txt +++ b/externals/grill/pool/readme.txt @@ -77,6 +77,8 @@ Version history: 0.2.2: - fixed serious bug with clearing values and dirs. e.g. "clrall" and "clrrec" messages. +- fixed double-free for clearing dirs and values +- re-introduced a help message 0.2.1: - fixed "cntsub"... directories in current directory have been forgotten diff --git a/externals/grill/pool/source/main.cpp b/externals/grill/pool/source/main.cpp index cddf33c0..dfdaa9d0 100644 --- a/externals/grill/pool/source/main.cpp +++ b/externals/grill/pool/source/main.cpp @@ -38,6 +38,9 @@ protected: V ms_pool(const AtomList &l); V mg_pool(AtomList &l); + // print some help message + static V m_help() { post("pool " POOL_VERSION " - hierarchical storage object, (C)2002-2005 Thomas Grill"); } + // clear all data in pool V m_reset(); @@ -164,6 +167,8 @@ private: FLEXT_ATTRVAR_I(vcnt) FLEXT_ATTRVAR_I(dcnt) + FLEXT_CALLBACK(m_help) + FLEXT_CALLBACK(m_reset) FLEXT_CALLBACK(m_getdir) @@ -234,7 +239,7 @@ const t_symbol *pool::sym_echo; V pool::setup(t_classid c) { post(""); - post("pool %s - hierarchical storage object, (C)2002-2005 Thomas Grill",POOL_VERSION); + pool::m_help(); post(""); head = tail = NULL; @@ -247,6 +252,7 @@ V pool::setup(t_classid c) FLEXT_CADDATTR_VAR1(c,"valcnt",vcnt); FLEXT_CADDATTR_VAR1(c,"dircnt",dcnt); + FLEXT_CADDMETHOD_(c,0,"help",m_help); FLEXT_CADDMETHOD_(c,0,"reset",m_reset); FLEXT_CADDMETHOD_(c,0,"getdir",m_getdir); FLEXT_CADDMETHOD_(c,0,"mkdir",m_mkdir); diff --git a/externals/grill/pool/source/pool.cpp b/externals/grill/pool/source/pool.cpp index 7632998d..1de7994e 100644 --- a/externals/grill/pool/source/pool.cpp +++ b/externals/grill/pool/source/pool.cpp @@ -64,7 +64,9 @@ poolval::poolval(const A &k,AtomList *d): poolval::~poolval() { if(data) delete data; - if(nxt) delete nxt; + +// if(nxt) delete nxt; + FLEXT_ASSERT(nxt == NULL); } poolval &poolval::Set(AtomList *d) @@ -93,7 +95,8 @@ pooldir::~pooldir() { Reset(false); - if(nxt) delete nxt; +// if(nxt) delete nxt; + FLEXT_ASSERT(nxt == NULL); } V pooldir::Clear(BL rec,BL dironly) @@ -104,6 +107,7 @@ V pooldir::Clear(BL rec,BL dironly) if(d) { do { d1 = d->nxt; + d->nxt = NULL; delete d; } while((d = d1) != NULL); dirs[i].d = NULL; @@ -117,6 +121,7 @@ V pooldir::Clear(BL rec,BL dironly) if(v) { do { v1 = v->nxt; + v->nxt = NULL; delete v; } while((v = v1) != NULL); vals[i].v = NULL; |