]> granicus.if.org Git - ejabberd/commitdiff
Use driver allocators in expat for reflecting memory in erlang:memory(system)
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Wed, 14 Jul 2010 04:19:16 +0000 (14:19 +1000)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Wed, 14 Jul 2010 04:19:16 +0000 (14:19 +1000)
src/expat_erl.c

index 8727e51722a869867642dd9ccdee567245e0d9e8..f6b552c59d678553c1b4135a970d94ec98155491 100644 (file)
@@ -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);