summaryrefslogtreecommitdiff
path: root/libyasm
diff options
context:
space:
mode:
authorPeter Johnson <peter@tortall.net>2001-12-01 19:19:56 +0000
committerPeter Johnson <peter@tortall.net>2001-12-01 19:19:56 +0000
commit4bcb83da56ec8bf52247198f9134bce4d909e7ec (patch)
tree6a7dc4e30aac0a980dd1924bfbb9193f19e52062 /libyasm
parenta9a74064b4eee409863bb6f37cf840a4374ca4b0 (diff)
downloadyasm-4bcb83da56ec8bf52247198f9134bce4d909e7ec.tar.gz
(Mostly) Clean up floatnum internal allocations.
svn path=/trunk/yasm/; revision=370
Diffstat (limited to 'libyasm')
-rw-r--r--libyasm/floatnum.c23
-rw-r--r--libyasm/floatnum.h3
2 files changed, 26 insertions, 0 deletions
diff --git a/libyasm/floatnum.c b/libyasm/floatnum.c
index 0f8e870b..d9006349 100644
--- a/libyasm/floatnum.c
+++ b/libyasm/floatnum.c
@@ -183,6 +183,29 @@ POT_Table_Init(void)
}
/*@=compdef@*/
+/*@-globstate@*/
+void
+floatnum_shutdown(void)
+{
+ int i;
+
+ if (!POT_TableN)
+ return;
+
+ /* Un-offset POT_TableP */
+ POT_TableP--;
+
+ for (i=0; i<14; i++) {
+ BitVector_Destroy(POT_TableN[i].f.mantissa);
+ BitVector_Destroy(POT_TableP[i].f.mantissa);
+ }
+ BitVector_Destroy(POT_TableP[14].f.mantissa);
+
+ xfree(POT_TableN);
+ xfree(POT_TableP);
+}
+/*@=globstate@*/
+
static void
floatnum_normalize(floatnum *flt)
{
diff --git a/libyasm/floatnum.h b/libyasm/floatnum.h
index b5ab637c..c699e317 100644
--- a/libyasm/floatnum.h
+++ b/libyasm/floatnum.h
@@ -24,6 +24,9 @@
#ifndef YASM_FLOATNUM_H
#define YASM_FLOATNUM_H
+/* Clean up internal allocations */
+void floatnum_shutdown(void);
+
/*@only@*/ floatnum *floatnum_new(const char *str);
/*@only@*/ floatnum *floatnum_copy(const floatnum *flt);
void floatnum_delete(/*@only@*/ floatnum *flt);