From 4a57064709e7db4c30f4390528de2bb4e37181a8 Mon Sep 17 00:00:00 2001 From: Trass3r Date: Tue, 15 Nov 2011 02:40:13 +0100 Subject: [PATCH 1/2] more x64 and warning fixes --- database.d | 4 ++-- dom.d | 4 ++++ html.d | 22 ++++++++++------------ rtud.d | 4 ++-- simpleaudio.d | 1 - simpledisplay.d | 6 +++--- web.d | 2 +- 7 files changed, 22 insertions(+), 21 deletions(-) delete mode 120000 simpleaudio.d diff --git a/database.d b/database.d index 1bac9a1..c862813 100644 --- a/database.d +++ b/database.d @@ -162,7 +162,7 @@ string escapedVariants(Database db, in string sql, Variant[] t) { string fixedup; int currentIndex; int currentStart = 0; - foreach(i, dchar c; sql) { + foreach(int i, dchar c; sql) { if(c == '?') { fixedup ~= sql[currentStart .. i]; @@ -321,7 +321,7 @@ string fixupSqlForDataObjectUse(string sql) { string[] tableNames; string piece = sql; - int idx; + sizediff_t idx; while((idx = piece.indexOf("JOIN")) != -1) { auto start = idx + 5; auto i = start; diff --git a/dom.d b/dom.d index 4793623..bdc47ef 100644 --- a/dom.d +++ b/dom.d @@ -2467,6 +2467,7 @@ class Document { parentChain = []; if(pos >= data.length) + { if(strict) { throw new MarkupError("Gone over the input (is there no root element?), chain: " ~ to!string(parentChain)); } else { @@ -2475,6 +2476,7 @@ class Document { else return Ele(4); // signal emptiness upstream } + } if(data[pos] != '<') { return Ele(0, readTextNode(), null); @@ -2701,10 +2703,12 @@ class Document { root = r.element; if(root is null) + { if(strict) assert(0, "empty document should be impossible in strict mode"); else parse(``); // fill in a dummy document in loose mode since that's what browsers do + } if(0&&sawImproperNesting) { // in loose mode, we can see some bad nesting. It's hard to fix above though diff --git a/html.d b/html.d index 617861c..93eea54 100644 --- a/html.d +++ b/html.d @@ -740,7 +740,7 @@ string translateJavascriptSourceWithDToStandardScript(string src)() { +/ abstract class CssPart { - string toString() const; + override string toString() const; CssPart clone() const; } @@ -799,7 +799,7 @@ class CssRuleSet : CssPart { css = css[idx .. $]; int braceCount = 0; string content; - int f = css.length; + size_t f = css.length; foreach(i, c; css) { if(c == '{') braceCount++; @@ -823,7 +823,7 @@ class CssRuleSet : CssPart { string[] selectors; CssPart[] contents; - CssRuleSet clone() const { + override CssRuleSet clone() const { auto n = new CssRuleSet(); n.selectors = selectors.dup; n.contents = contents.dup; @@ -930,7 +930,7 @@ CssPart[] lexCss(string css) { auto beginningOfBlock = css.indexOf("{"); if(beginningOfBlock == -1 || endOfStatement < beginningOfBlock) - p = new CssRule(css, endOfStatement); + p = new CssRule(css, cast(int) endOfStatement); else p = new CssRuleSet(css); } @@ -947,11 +947,12 @@ CssPart[] lexCss(string css) { string cssToString(in CssPart[] css) { string ret; foreach(c; css) { - if(ret.length) + if(ret.length) { if(ret[$ -1] == '}') ret ~= "\n\n"; else ret ~= "\n"; + } ret ~= c.toString(); } @@ -1100,13 +1101,10 @@ class MacroExpander { args = args[1 .. $]; dstring returned; - int iterations = args.length; + size_t iterations = args.length; if(m.args.length != 0) iterations = (args.length + m.args.length - 1) / m.args.length; - if(iterations < 0) - iterations = 0; - foreach(i; 0 .. iterations) { returned ~= expandMacro(m, args); if(m.args.length < args.length) @@ -1151,7 +1149,7 @@ class MacroExpander { // the replacement goes // src[0 .. startingSliceForReplacement] ~ new ~ src[endingSliceForReplacement .. $]; - int startingSliceForReplacement, endingSliceForReplacement; + sizediff_t startingSliceForReplacement, endingSliceForReplacement; dstring functionName; dstring[] arguments; @@ -1160,7 +1158,7 @@ class MacroExpander { startingSliceForReplacement = idx; // idx++; // because the star in UTF 8 is two characters. FIXME: hack -- not needed thx to dstrings auto possibility = src[idx + 1 .. $]; - int argsBegin; + size_t argsBegin; bool found = false; foreach(i, c; possibility) { @@ -1217,7 +1215,7 @@ class MacroExpander { goto doReplacement; // actually parsing the arguments - int currentArgumentStarting = argsBegin + 1; + size_t currentArgumentStarting = argsBegin + 1; int open; diff --git a/rtud.d b/rtud.d index 1886033..c596d78 100644 --- a/rtud.d +++ b/rtud.d @@ -102,7 +102,7 @@ int openNetworkFd(string host, ushort port) { void writeToFd(int fd, string s) { again: - int num = linux.write(fd, s.ptr, s.length); + auto num = linux.write(fd, s.ptr, s.length); if(num < 0) throw new Exception("couldn't write"); if(num == 0) @@ -150,7 +150,7 @@ int handleListenerGateway(Cgi cgi, string channelPrefix) { string[4096] buffer; for(;;) { - int num = linux.read(f, buffer.ptr, buffer.length); + auto num = linux.read(f, buffer.ptr, buffer.length); if(num < 0) throw new Exception("read error"); if(num == 0) diff --git a/simpleaudio.d b/simpleaudio.d deleted file mode 120000 index 128220c..0000000 --- a/simpleaudio.d +++ /dev/null @@ -1 +0,0 @@ -../../dimage/simpleaudio.d \ No newline at end of file diff --git a/simpledisplay.d b/simpledisplay.d index c778b67..b20205c 100644 --- a/simpledisplay.d +++ b/simpledisplay.d @@ -943,7 +943,7 @@ version(X11) { void drawText(int x, int y, int x2, int y2, string text) { foreach(line; text.split("\n")) { - XDrawString(display, d, gc, x, y + 12, line.ptr, line.length); + XDrawString(display, d, gc, x, y + 12, line.ptr, cast(int) line.length); y += 16; } } @@ -996,11 +996,11 @@ version(X11) { if(backgroundIsNotTransparent) { swapColors(); - XFillPolygon(display, d, gc, points.ptr, points.length, PolygonShape.Complex, CoordMode.CoordModeOrigin); + XFillPolygon(display, d, gc, points.ptr, cast(int) points.length, PolygonShape.Complex, CoordMode.CoordModeOrigin); swapColors(); } if(foregroundIsNotTransparent) { - XDrawLines(display, d, gc, points.ptr, points.length, CoordMode.CoordModeOrigin); + XDrawLines(display, d, gc, points.ptr, cast(int) points.length, CoordMode.CoordModeOrigin); } } } diff --git a/web.d b/web.d index c844fe9..aee2ff1 100644 --- a/web.d +++ b/web.d @@ -1463,7 +1463,7 @@ string toJson(T)(T a) { /// like toHtml - it makes a json value of any given type. /// It can be used generically, or it can be passed an ApiProvider so you can do a secondary custom -/// format. (it calls api.formatAs!(type)(typeRequestString). Why would you want that? Maybe +/// format. (it calls api.formatAs!(type)(typeRequestString)). Why would you want that? Maybe /// your javascript wants to do work with a proper object,but wants to append it to the document too. /// Asking for json with secondary format = html means the server will provide both to you. From 9d027eb3f660f9c8acbdf57c6f2ce0673c3106d1 Mon Sep 17 00:00:00 2001 From: Trass3r Date: Tue, 15 Nov 2011 19:23:56 +0100 Subject: [PATCH 2/2] fix varargs code in database and a few errors in mssql + x64 --- database.d | 32 ++++++++------------------------ dom.d | 8 ++++---- mssql.d | 7 +++---- 3 files changed, 15 insertions(+), 32 deletions(-) diff --git a/database.d b/database.d index c862813..310228f 100644 --- a/database.d +++ b/database.d @@ -25,35 +25,19 @@ interface Database { Variant[] args; foreach(arg; _arguments) { string a; - if(arg == typeid(string)) { - a = va_arg!(string)(_argptr); - } else if(arg == typeid(immutable(string))) { - a = va_arg!(immutable(string))(_argptr); - } else if(arg == typeid(const(immutable(char)[]))) { - a = va_arg!(const(immutable(char)[]))(_argptr); - } else if (arg == typeid(int)) { - auto e = va_arg!(int)(_argptr); - a = to!string(e); - } else if (arg == typeid(immutable(int))) { - auto e = va_arg!(immutable(int))(_argptr); - a = to!string(e); - } else if (arg == typeid(const(int))) { - auto e = va_arg!(const(int))(_argptr); + if(arg == typeid(string) || arg == typeid(immutable(string)) || arg == typeid(const(string))) + a = va_arg!string(_argptr); + else if (arg == typeid(int) || arg == typeid(immutable(int)) || arg == typeid(const(int))) { + int e = va_arg!int(_argptr); a = to!string(e); } else if (arg == typeid(immutable(char))) { - auto e = va_arg!(immutable(char))(_argptr); + char e = va_arg!char(_argptr); a = to!string(e); - } else if (arg == typeid(long)) { - auto e = va_arg!(long)(_argptr); - a = to!string(e); - } else if (arg == typeid(const(long))) { - auto e = va_arg!(const(long))(_argptr); - a = to!string(e); - } else if (arg == typeid(immutable(long))) { - auto e = va_arg!(immutable(long))(_argptr); + } else if (arg == typeid(long) || arg == typeid(const(long)) || arg == typeid(immutable(long))) { + long e = va_arg!long(_argptr); a = to!string(e); } else if (arg == typeid(void*)) { - auto e = va_arg!(void*)(_argptr); + void* e = va_arg!(void*)(_argptr); assert(e is null, "can only pass null pointer"); a = null; } else assert(0, "invalid type " ~ arg.toString ); diff --git a/dom.d b/dom.d index bdc47ef..f1bd699 100644 --- a/dom.d +++ b/dom.d @@ -2172,7 +2172,7 @@ class Table : Element { return position; } - foreach(i, rowElement; rows) { + foreach(int i, rowElement; rows) { auto row = cast(TableRow) rowElement; assert(row !is null); assert(i < ret.length); @@ -2186,8 +2186,8 @@ class Table : Element { // FIXME: colspan == 0 or rowspan == 0 // is supposed to mean fill in the rest of // the table, not skip it - foreach(j; 0 .. cell.colspan) { - foreach(k; 0 .. cell.rowspan) + foreach(int j; 0 .. cell.colspan) { + foreach(int k; 0 .. cell.rowspan) // if the first row, always append. insertCell(k + i, k == 0 ? -1 : position, cell); position++; @@ -2195,7 +2195,7 @@ class Table : Element { } if(ret[i].length > maxLength) - maxLength = ret[i].length; + maxLength = cast(int) ret[i].length; } // want to ensure it's rectangular diff --git a/mssql.d b/mssql.d index 6b511b2..054e0ca 100644 --- a/mssql.d +++ b/mssql.d @@ -19,7 +19,7 @@ class MsSql : Database { enforce(env !is null); scope(failure) SQLFreeHandle(SQL_HANDLE_ENV, env); - SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0); + SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, cast(void *) SQL_OV_ODBC3, 0); SQLAllocHandle(SQL_HANDLE_DBC, env, &conn); scope(failure) SQLFreeHandle(SQL_HANDLE_DBC, conn); @@ -50,8 +50,7 @@ class MsSql : Database { // this is passed to MsSqlResult to control SQLHSTMT statement; - auto returned = SQLAllocHandle(SQL_HANDLE_STMT, conn, - &statement) + auto returned = SQLAllocHandle(SQL_HANDLE_STMT, conn, &statement); enforce(returned == SQL_SUCCESS); @@ -157,7 +156,7 @@ class MsSqlResult : ResultSet { if(ptr) goto more; } -} + } row ~= a; }