Fixed [1579558] (TZ longer than 64 chars on solaris, with FREEMEM redefined).



git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1390 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/GeneralizedTime.c b/skeletons/GeneralizedTime.c
index 653849a..10b73ad 100644
--- a/skeletons/GeneralizedTime.c
+++ b/skeletons/GeneralizedTime.c
@@ -105,10 +105,13 @@
 	tzold = getenv("TZ");						\
 	if(tzold) {							\
 		size_t tzlen = strlen(tzold);				\
-		if(tzlen < sizeof(tzoldbuf))				\
+		if(tzlen < sizeof(tzoldbuf)) {				\
 			tzold = memcpy(tzoldbuf, tzold, tzlen + 1);	\
-		else							\
-			tzold = strdup(tzold);	/* Ignore error */	\
+		} else {						\
+			char *dupptr = tzold;
+			tzold = MALLOC(tzlen + 1);			\
+			if(tzold) memcpy(tzold, dupptr, tzlen + 1);	\
+		}							\
 		setenv("TZ", "UTC", 1);					\
 	}								\
 	tzset();							\