* src/pic16/gen.c (pic16_freeAsmop): avoid NULL pointer dereference,
[fw/sdcc] / src / pic16 / gen.c
index 358a2e266e2c18fa9f460776978fbc946a6e114b..fa1d7a014660d3255e42ada3791a871ae15c8aa0 100644 (file)
@@ -1163,7 +1163,7 @@ void pic16_freeAsmop (operand *op, asmop *aaop, iCode *ic, bool pop)
                   }
                 }
 
-                {
+                if (_G.sregsAllocSet) {
                   regs *sr;
 
                     _G.sregsAllocSet = reverseSet( _G.sregsAllocSet );
@@ -9366,8 +9366,8 @@ static void genAssign (iCode *ic)
     pic16_addSign(result, AOP_SIZE(right), !IS_UNSIGNED(operandType(right)));
 
 release:
-  pic16_freeAsmop (right,NULL,ic,FALSE);
   pic16_freeAsmop (result,NULL,ic,TRUE);
+  pic16_freeAsmop (right,NULL,ic,FALSE);
 }
 
 /*-----------------------------------------------------------------*/