diff --git a/meta/src/TClass.cxx b/meta/src/TClass.cxx
index 461846b6891268b180fd1572b5fe5ec9db1fbf66..17ded682a8e8feb1856b21a4ceaf7479ae16fc79 100644
--- a/meta/src/TClass.cxx
+++ b/meta/src/TClass.cxx
@@ -1,4 +1,4 @@
-// @(#)root/meta:$Name:  $:$Id: TClass.cxx,v 1.192 2006/05/24 15:09:22 brun Exp $
+// @(#)root/meta:$Name:  $:$Id: TClass.cxx,v 1.193 2006/06/28 10:03:13 pcanal Exp $
 // Author: Rene Brun   07/01/95
 
 /*************************************************************************
@@ -1614,18 +1614,32 @@ TDataMember *TClass::GetDataMember(const char *datamember) const
    if (!fClassInfo) return 0;
 
    // Strip off leading *'s and trailing [
-   char memb[64];
+   const Int_t size_buffer = 256;
+   char memb[size_buffer];
    char *s = (char*)datamember;
    while (*s == '*') s++;
-   strcpy(memb, s);
-   if ((s = strchr(memb, '['))) *s = 0;
+
+   size_t len = strlen(s);
+   if (len > size_buffer - 2)
+      len = size_buffer - 2;
+   strncpy(memb, s, len);
+   memb[len] = 0;
+
+   if ((s = strchr(memb, '['))) {
+      *s = 0;
+      len = strlen(memb);
+   }
 
    TDataMember *dm;
    TIter   next(((TClass*)this)->GetListOfDataMembers());
 
    while ((dm = (TDataMember *) next()))
-      if (strcmp(memb, dm->GetName()) == 0)
-         return dm;
+      if (len >= size_buffer - 2) {
+         if (strncmp(memb, dm->GetName(), len) == 0)
+            return dm;
+      } else 
+         if (strcmp(memb, dm->GetName()) == 0)
+            return dm;
    return 0;
 }