aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2010-07-14 14:19:16 +1000
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2010-07-14 14:19:16 +1000
commitd7930d7f820e5dd6b07b823f155aeb943b525e16 (patch)
treeeb639c6c5f3fa9720a27c6c36959e3c366ffe6d3
parentFix my flock change from last friday (diff)
Use driver allocators in expat for reflecting memory in erlang:memory(system)
-rw-r--r--src/expat_erl.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/expat_erl.c b/src/expat_erl.c
index 8727e5172..f6b552c59 100644
--- a/src/expat_erl.c
+++ b/src/expat_erl.c
@@ -41,6 +41,8 @@ typedef struct {
XML_Parser parser;
} expat_data;
+static XML_Memory_Handling_Suite ms = {driver_alloc, driver_realloc, driver_free};
+
void *erlXML_StartElementHandler(expat_data *d,
const XML_Char *name,
const XML_Char **atts)
@@ -98,7 +100,7 @@ static ErlDrvData expat_erl_start(ErlDrvPort port, char *buff)
{
expat_data* d = (expat_data*)driver_alloc(sizeof(expat_data));
d->port = port;
- d->parser = XML_ParserCreate("UTF-8");
+ d->parser = XML_ParserCreate_MM("UTF-8", &ms, NULL);
XML_SetUserData(d->parser, d);
set_port_control_flags(port, PORT_CONTROL_FLAG_BINARY);