check now pop stack result
[fw/sdcc] / debugger / mcs51 / break.c
index d71f9bf0667f6efcae69e4a57bfbca8245f5a8b8..e18cbcff081e88db61639d430925d228384f1b0d 100644 (file)
@@ -462,10 +462,16 @@ BP_CALLBACK(fexitCB)
     /* pop the top most from the call stack */
     func = STACK_POP(callStack);
 
+    if (!func)
+    {
+        fprintf(stdout,"Stack underflow\n");
+        return 1;
+    }
+
     Dprintf(D_break, ("break: fexitCB: BP_CALLBACK entry %s %p\n",func->sym->name, p_callStack));
 
     /* check main function */
-    if ( STACK_EMPTY(callStack))
+    if ( STACK_EMPTY(callStack) && !strcmp(func->sym->name,"main"))
     {
         fprintf(stdout,"Program exited with code %d.\n",simGetValue (0x82,'I',2));
         return 1;