diff --git a/test/gitinfointoso/getalgoinfo.c b/test/gitinfointoso/getalgoinfo.c
index 1ba79d3fb67d7fc2e1ad33eac78ed001ad03e69d..0156b206beb76012567570837000f755c28d4e9f 100644
--- a/test/gitinfointoso/getalgoinfo.c
+++ b/test/gitinfointoso/getalgoinfo.c
@@ -21,8 +21,11 @@ int main(int argn, char *argv[])
 {
 	char sofilename[1024];
 	char *filename;
-	char localfilename[1024];
-	char algoinfofcnname[1024];
+	//char localfilename[1024];
+	char *localfilename;
+	//char algoinfofcnname[1024];
+	char *algoinfofcnname;
+	int size;
 	
 	void *libhnd;
 	void (*algoinfofunc)(struct algoinfo *);
@@ -32,10 +35,8 @@ int main(int argn, char *argv[])
 	{
 		printf("usage %s <scd .so filename>\n", argv[0]);
 		exit(-1);
-	} 
-
-	//snprintf(sofilename, strlen(basename(argv[1]))+3,"./%s", argv[1]); 
-	    
+	} 	
+		    
 	libhnd=dlopen(argv[1], RTLD_LAZY | RTLD_GLOBAL);
 	if(libhnd==NULL)
 	{
@@ -44,8 +45,13 @@ int main(int argn, char *argv[])
 	}
  
  	filename=basename(argv[1]);
+	size=snprintf(localfilename, 0,"%s", filename);
+	localfilename = malloc(size * sizeof(char));	
 	snprintf(localfilename, strlen(filename)-2,"%s", filename);
- 	snprintf(algoinfofcnname, strlen(localfilename)+13,"%s_GetAlgoInfo", localfilename);
+ 	
+	size=snprintf(algoinfofcnname, 0,"%s_GetAlgoInfo", localfilename);
+	algoinfofcnname = malloc(size * sizeof(char));
+	snprintf(algoinfofcnname, strlen(localfilename)+13,"%s_GetAlgoInfo", localfilename);
  
 	algoinfofunc=dlsym(libhnd, algoinfofcnname);
 	if(algoinfofunc==NULL)
@@ -59,5 +65,7 @@ int main(int argn, char *argv[])
     
     printf("%s (%d characters)\n", ai.text, ai.len);
     
+    free(localfilename);
+    free(algoinfofcnname);
 
 }