* src/mcs51/ralloc.c (getRegPtr, getRegGpr),
[fw/sdcc] / as / mcs51 / lkarea.c
index 4431868284d3c6436bf1a5879fc2a84a7dc48a58..9646d30f5560df8ecd33e1364ed9ed5730632881 100644 (file)
@@ -487,7 +487,7 @@ VOID lnkarea2 (void)
        struct sym *sp;
        int j;
     struct area *dseg_ap=NULL;
-       struct sym *sp_dseg_s, *sp_dseg_l;
+       struct sym *sp_dseg_s=NULL, *sp_dseg_l=NULL;
 
        for(j=0; j<256; j++) idatamap[j]=' ';
 
@@ -555,11 +555,14 @@ VOID lnkarea2 (void)
        }
 
     /*Compute the size of DSEG*/
-    dseg_ap->a_addr=0;
-    dseg_ap->a_size=0;
-    for(j=0; j<0x80; j++) if(idatamap[j]!=' ') dseg_ap->a_size++;
-    sp_dseg_s->s_addr=0;
-    sp_dseg_l->s_addr=dseg_ap->a_size;
+       if(dseg_ap!=NULL)
+       {
+               dseg_ap->a_addr=0;
+               dseg_ap->a_size=0;
+               for(j=0; j<0x80; j++) if(idatamap[j]!=' ') dseg_ap->a_size++;
+       }
+    if(sp_dseg_s!=NULL) sp_dseg_s->s_addr=0;
+    if(sp_dseg_l!=NULL) sp_dseg_l->s_addr=dseg_ap->a_size;
 
 #if 0
     /*Print the memory map*/