summaryrefslogtreecommitdiff
path: root/bcc/exptree.c
diff options
context:
space:
mode:
Diffstat (limited to 'bcc/exptree.c')
-rw-r--r--bcc/exptree.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/bcc/exptree.c b/bcc/exptree.c
index 04a4534..c5cc09f 100644
--- a/bcc/exptree.c
+++ b/bcc/exptree.c
@@ -358,7 +358,12 @@ struct nodestruct *p2;
needspv(p2);
if (p1->nodetype == p2->nodetype)
{
- p1->flags &= ~LVALUE;
+/* No ancient switch on low mem systems */
+#ifndef VERY_SMALL_MEMORY
+ /* In ancient UNIX C, casts remain lvalues */
+ if (!ancient)
+#endif
+ p1->flags &= ~LVALUE;
return p1;
}
if ((rscalar = p2->nodetype->scalar) & ISCALAR)
@@ -455,7 +460,12 @@ struct nodestruct *p2;
}
else
goto node1;
- p1->flags &= ~LVALUE;
+/* No ancient switch on low mem systems */
+#ifndef VERY_SMALL_MEMORY
+ /* In ancient UNIX C, casts remain lvalues */
+ if (!ancient)
+#endif
+ p1->flags &= ~LVALUE;
p1->nodetype = target->type = p2->nodetype;
return p1;
case INDIRECTOP: