]> andersk Git - splint.git/blobdiff - src/exprNode.c
Added (limited) support for implicit annotations.
[splint.git] / src / exprNode.c
index c6c528b949a7b3e0297be15242558fed4ebdffc7..6491d07e7c04f805aa9baa4ac4ac6de194f99bc7 100644 (file)
@@ -222,13 +222,6 @@ static void exprNode_resetSref (/*@notnull@*/ exprNode e)
   e->sref = defref;
 }
 
-exprNode exprNode_fakeCopy (exprNode e)
-{
-  /*@-temptrans@*/ /*@-retalias@*/
-  return e;
-  /*@=temptrans@*/ /*@=retalias@*/
-}
-
 static bool isFlagKey (char key)
 {
   return (key == '-' || key == '+' || key == ' ' || key == '#');
@@ -745,9 +738,9 @@ exprNode_stringLiteral (/*@only@*/ cstring t, /*@only@*/ fileloc loc)
   /* This expr is null terminated, so we set the len and size */
   sRef_setNullTerminatedState(e->sref);
   /*
-  TPRINTF("Len is set to : %d\n\n", strlen((char *)multiVal_forceString(e->val)));
-  TPRINTF("Size is set to : %d\n\n", strlen((char *)multiVal_forceString(e->val)));
-  TPRINTF("State is set to: %d\n\n", e->sref->bufinfo.bufstate);
+  DPRINTF("Len is set to : %d\n\n", strlen((char *)multiVal_forceString(e->val)));
+  DPRINTF("Size is set to : %d\n\n", strlen((char *)multiVal_forceString(e->val)));
+  DPRINTF("State is set to: %d\n\n", e->sref->bufinfo.bufstate);
   */
   sRef_setLen(e->sref, strlen((char *)multiVal_forceString(e->val)));
   sRef_setSize(e->sref, strlen((char *)multiVal_forceString(e->val)));
@@ -3616,7 +3609,7 @@ exprNode_postOp (/*@only@*/ exprNode e, /*@only@*/ lltok op)
 
   /* added 7/11/2000 D.L */
   
-  updateEnvironmentForPostOp (e);
+  //  updateEnvironmentForPostOp (e);
 
        /* start modifications */
        /* added by Seejo on 4/16/2000 */
@@ -4622,7 +4615,17 @@ exprNode_makeOp (/*@keep@*/ exprNode e1, /*@keep@*/ exprNode e2,
                                //ret->sref = sRef_makeAddress (e->sref);
                                //}
 
-                        int val = (int) multiVal_forceInt (e2->val);
+             int val;
+             /*drl 1-4-2001
+               added ugly fixed to stop
+               program from crashing on point + int +int
+               one day I'll fix this or ask Seejo wtf the codes supposed to do. */
+
+             if (!multiVal_isInt (e2->val) )
+               break;
+             /*end drl*/
+             
+             val = (int) multiVal_forceInt (e2->val);
 
                        /* Operator : + or += */
                    if ((lltok_getTok (op) == TPLUS) || (lltok_getTok(op) == ADD_ASSIGN)) {
@@ -4649,7 +4652,7 @@ exprNode_makeOp (/*@keep@*/ exprNode e1, /*@keep@*/ exprNode e2,
                                        sRef_setLen (ret->sref, sRef_getLen(e1->sref) + val);
                                }
                        }
-                }
+           }
                        
             /* end modifications */  
 
@@ -5771,7 +5774,7 @@ exprNode exprNode_concat (/*@only@*/ exprNode e1, /*@only@*/ exprNode e2)
     }
 
   exprNode_mergeUSs (ret, e2);
-  ret = exprNode_mergeEnvironments (ret, e1, e2);
+  // ret = exprNode_mergeEnvironments (ret, e1, e2);
   usymtab_setExitCode (ret->exitCode);
   
   if (ret->mustBreak)
@@ -9736,7 +9739,7 @@ doAssign (/*@notnull@*/ exprNode e1, /*@notnull@*/ exprNode e2, bool isInit)
     {
       updateAliases (e1, e2); 
     }
-  updateEnvironment (e1, e2);
+  //  updateEnvironment (e1, e2);
 }
 
 static void 
@@ -9984,3 +9987,20 @@ fileloc exprNode_getNextSequencePoint (exprNode e)
  }
 
 
+/*drl added
+ */
+exprNode exprNode_fakeCopy (exprNode e)
+{
+  /*@-temptrans@*/ /*@-retalias@*/
+  return e;
+  /*@=temptrans@*/ /*@=retalias@*/
+}
+
+exprNode exprNode_createNew(ctype c)
+{
+  exprNode ret;
+
+  ret = exprNode_createPlain (c);
+
+  return ret;
+}
This page took 0.041232 seconds and 4 git commands to generate.