diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 8b4f63f6097a264727de1e06193b8413324a8f20..346bb9eda9295affd87440144ca99a8d00fba6eb 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2011-02-15  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+	PR fortran/47633
+	. simplify.c (gfc_simplify_compiler_version): Fix off-by-one issue.
+
 2011-02-14  Janus Weil  <janus@gcc.gnu.org>
 
 	PR fortran/47730
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index ba8804401bf53b774bc21e4202406e7aae1f2c33..bb8b575ded8731cf5f3422949a5480ad5f8da166 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -6844,9 +6844,9 @@ gfc_simplify_compiler_version (void)
   char *buffer;
   size_t len;
 
-  len = strlen ("GCC version ") + strlen (version_string) + 1;
-  buffer = (char*) alloca (len);
-  snprintf (buffer, len, "GCC version %s", version_string);
+  len = strlen ("GCC version ") + strlen (version_string);
+  buffer = XALLOCAVEC (char, len + 1);
+  snprintf (buffer, len + 1, "GCC version %s", version_string);
   return gfc_get_character_expr (gfc_default_character_kind,
                                 &gfc_current_locus, buffer, len);
 }