aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/pool
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2005-12-14 01:53:02 +0000
committerThomas Grill <xovo@users.sourceforge.net>2005-12-14 01:53:02 +0000
commit59ad9e9cf0a72b31f8bfd371cb97536ed4d4fe61 (patch)
treed424023df43b0a5649bf93b025338f8b76bce244 /externals/grill/pool
parentde76301bb4d17339e4eb6eb31abf53ede4734e1e (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.pd14
-rw-r--r--externals/grill/pool/pool.vcproj4
-rw-r--r--externals/grill/pool/readme.txt2
-rw-r--r--externals/grill/pool/source/main.cpp8
-rw-r--r--externals/grill/pool/source/pool.cpp9
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;