Skip to content

Commit 27f914e

Browse files
committed
fix bug on new used in void context, reported by Eclesia++
1 parent 665f3a2 commit 27f914e

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

winxedst1.winxed

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6206,6 +6206,9 @@ class NewExpr : NewBaseExpr
62066206
regnew = self.tempreg(REGvar);
62076207
}
62086208

6209+
if (regnew == '')
6210+
regnew = self.tempreg(REGvar);
6211+
62096212
switch (type) {
62106213
case BYNAME:
62116214
// By name, usually a pmc.
@@ -6251,7 +6254,7 @@ class NewExpr : NewBaseExpr
62516254
}
62526255
if (numinits > 1 || (numinits >= 0 && type == BYIDENT)) {
62536256
self.emit_constructor(e, regnew, constructor);
6254-
if (! is_init)
6257+
if (! is_init && result != '')
62556258
e.emitset(result, regnew);
62566259
}
62576260
}
@@ -6294,6 +6297,10 @@ class NewIndexedExpr : NewBaseExpr
62946297
SyntaxError('Multiple init arguments not allowed here', self);
62956298
}
62966299
var nskey = self.nskey;
6300+
6301+
if (result == '')
6302+
result = self.tempreg(REGvar);
6303+
62976304
e.print(INDENT);
62986305
if (nskey.hasHLL())
62996306
e.print("root_");
@@ -6330,14 +6337,19 @@ class NewQualifiedExpr : NewBaseExpr
63306337
if (numinits > 0)
63316338
regnew = self.tempreg(REGvar);
63326339
var nskey = self.nskey;
6340+
6341+
if (regnew == '')
6342+
regnew = self.tempreg(REGvar);
6343+
63336344
e.print(INDENT, 'new ', regnew, ", ");
63346345
nskey.emit(e, self.owner);
63356346
e.say();
63366347

63376348
if (numinits >= 0) {
63386349
string constructor = nskey.last();
63396350
self.emit_constructor(e, regnew, constructor);
6340-
e.emitset(result, regnew);
6351+
if (result != '')
6352+
e.emitset(result, regnew);
63416353
}
63426354
}
63436355
}

0 commit comments

Comments
 (0)