# HG changeset patch # User korDen # Date 1287343408 -14400 # Node ID 0622fff7810aa6cf4706ad83787fbfe0cb661c03 # Parent cd48cb899aeedecf882bf66803e0f13a9583873e Fixed a few memory allocation related issues diff -r cd48cb899aee -r 0622fff7810a buildHelper.d --- a/buildHelper.d Sun Oct 17 20:56:07 2010 +0400 +++ b/buildHelper.d Sun Oct 17 23:23:28 2010 +0400 @@ -8,7 +8,7 @@ import std.string: replace, format; import std.zip; -enum dmdVersionDefault = "2.039"; +enum dmdVersionDefault = "2.040"; enum dmdArchiveBaseURL = "http://ftp.digitalmars.com/"; enum dmdLib = "dmd.lib"; version(Windows) @@ -166,6 +166,10 @@ copyAndPatch("mars.c", "mars2.c", (ref string data) { data = data.replace("int main(int argc, char *argv[])", "int HIDE_main(int argc, char *argv[])"); }); + + copyAndPatch("util.c", "util.c", (ref string data) { + data = data.replace("void util_assert(char *file,int line)", "void HIDE_util_assert(char *file,int line)"); + }); // Apply patch doChDir("../../.."); diff -r cd48cb899aee -r 0622fff7810a dmd/PragmaDeclaration.d --- a/dmd/PragmaDeclaration.d Sun Oct 17 20:56:07 2010 +0400 +++ b/dmd/PragmaDeclaration.d Sun Oct 17 23:23:28 2010 +0400 @@ -21,7 +21,7 @@ import dmd.backend.Util; import dmd.backend.Symbol; -import core.memory; +import core.stdc.stdlib : malloc; class PragmaDeclaration : AttribDeclaration { @@ -252,7 +252,7 @@ assert(e.op == TOKstring); auto se = cast(StringExp)e; - char* name = cast(char*)GC.malloc(se.len + 1); + char* name = cast(char*)malloc(se.len + 1); memcpy(name, se.string_, se.len); name[se.len] = 0; version (OMFOBJ) { diff -r cd48cb899aee -r 0622fff7810a dmd/StringExp.d --- a/dmd/StringExp.d Sun Oct 17 20:56:07 2010 +0400 +++ b/dmd/StringExp.d Sun Oct 17 23:23:28 2010 +0400 @@ -858,7 +858,7 @@ e.Eoper = OPER.OPstring; static if (true) { // Match MEM_PH_FREE for OPstring in ztc\el.c - e.EV.ss.Vstring = cast(char*)GC.malloc((len + 1) * sz); /// ! + e.EV.ss.Vstring = cast(char*)malloc((len + 1) * sz); memcpy(e.EV.ss.Vstring, string_, (len + 1) * sz); } else { e.EV.ss.Vstring = cast(char*)string_; diff -r cd48cb899aee -r 0622fff7810a dmd/StringTable.d --- a/dmd/StringTable.d Sun Oct 17 20:56:07 2010 +0400 +++ b/dmd/StringTable.d Sun Oct 17 23:23:28 2010 +0400 @@ -15,14 +15,14 @@ struct StringTable { Object[string] table; - +/* ~this() { foreach (k, v; table) { delete v; } } - +*/ Object* lookup(string s) { return s in table; diff -r cd48cb899aee -r 0622fff7810a dmd/SwitchStatement.d --- a/dmd/SwitchStatement.d Sun Oct 17 20:56:07 2010 +0400 +++ b/dmd/SwitchStatement.d Sun Oct 17 23:23:28 2010 +0400 @@ -487,7 +487,7 @@ block_next(blx,BCswitch,null); // Corresponding free is in block_free - targ_llong* pu = cast(targ_llong*) GC.malloc(targ_llong.sizeof * (numcases + 1)); + targ_llong* pu = cast(targ_llong*) malloc(targ_llong.sizeof * (numcases + 1)); mystate.switchBlock.Bswitch = pu; /* First pair is the number of cases, and the default block */ diff -r cd48cb899aee -r 0622fff7810a dmd/codegen/Util.d --- a/dmd/codegen/Util.d Sun Oct 17 20:56:07 2010 +0400 +++ b/dmd/codegen/Util.d Sun Oct 17 23:23:28 2010 +0400 @@ -1132,7 +1132,7 @@ es.Eoper = OPER.OPstring; // Match MEM_PH_FREE for OPstring in ztc\el.c - es.EV.ss.Vstring = cast(char*)GC.malloc(len); /// ! + es.EV.ss.Vstring = cast(char*)malloc(len); memcpy(es.EV.ss.Vstring, &e.EV, len); es.EV.ss.Vstrlen = len;