diff packages/hal/common/current/src/generic-stub.c @ 182:f62680ef1804

Merge from eCos master repository on 2001-09-07-06:43:02-BST
author jlarmour
date Wed, 12 Sep 2001 00:59:17 +0000
parents 0d2b193a635f
children 022f1e506033
line wrap: on
line diff
--- a/packages/hal/common/current/src/generic-stub.c
+++ b/packages/hal/common/current/src/generic-stub.c
@@ -1264,7 +1264,11 @@ int
             && __hexToInt (&ptr, &length)
             && *ptr++ == ':')
           {
-            if (is_binary)
+            /* GDB sometimes sends an impossible length */
+            if (length < 0 || length >= BUFMAX)
+              strcpy (remcomOutBuffer, "E01");
+                
+            else if (is_binary)
               {
                 while (length > 0)
                   {
@@ -1290,7 +1294,7 @@ int
                 else
                   strcpy (remcomOutBuffer, "E03");
               }
-              else
+            else
               {
                 if (__hex2mem_safe (ptr, addr, length) != NULL)
                   strcpy (remcomOutBuffer, "OK");
@@ -1389,8 +1393,10 @@ int
         return -1;
       }
 
-      /* kill the program */
-    case 'k' :
+    case 'D' :     /* detach */
+      __putpacket (remcomOutBuffer);
+      /* fall through */
+    case 'k' :      /* kill the program */
 #ifdef __ECOS__
       hal_flush_output();
 #endif