diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e9025fd8d8b5d16487a656fdc6e68ffbf24780e5..2d10fb5d1ea550d67827db1c154e74114679e232 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2000-08-24  Greg McGary  <greg@mcgary.org>
+
+	* cppfiles.c (actual_directory): Don't write beyond `dir'
+	when it contains "".
+	* real.c (asctoeg): Stay within bounds of etens[][].
+
 2000-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
 	* dependence.c (dependence_string, direction_string,
diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c
index 2a8f01c38353b1297cac65c27bce1d53d0ad8a8f..2078989a62c41ea6f4171cf0f4e47f67779079f7 100644
--- a/gcc/cppfiles.c
+++ b/gcc/cppfiles.c
@@ -1041,8 +1041,8 @@ actual_directory (pfile, fname)
     }
   else
     {
-      dir[0] = '.';
-      dir[1] = '\0';
+      free (dir);
+      dir = xstrdup (".");
       dlen = 1;
     }
 
diff --git a/gcc/real.c b/gcc/real.c
index eb8736c72cdd40431d310e20b36ee7ff8a274bda..6c09f753ce922f1f26e6eeac523b0c116ea563e1 100644
--- a/gcc/real.c
+++ b/gcc/real.c
@@ -5132,9 +5132,9 @@ asctoeg (ss, y, oprec)
 {
   unsigned EMUSHORT yy[NI], xt[NI], tt[NI];
   int esign, decflg, sgnflg, nexp, exp, prec, lost;
-  int k, trail, c, rndsav;
+  int i, k, trail, c, rndsav;
   EMULONG lexp;
-  unsigned EMUSHORT nsign, *p;
+  unsigned EMUSHORT nsign;
   char *sp, *s, *lstr;
   int base = 10;
 
@@ -5418,14 +5418,14 @@ read_expnt:
 	  nexp -= 4096;
 	}
     }
-  p = &etens[NTEN][0];
   emov (eone, xt);
   exp = 1;
+  i = NTEN;
   do
     {
       if (exp & nexp)
-	emul (p, xt, xt);
-      p -= NE;
+	emul (etens[i], xt, xt);
+      i--;
       exp = exp + exp;
     }
   while (exp <= MAXP);