@@ -1028,11 +1028,15 @@ SHPHandle SHPAPI_CALL SHPCreateLL(const char *pszLayer, int nShapeType,
10281028 SAFile fpSHP = psHooks -> FOpen (pszFullname , "w+b" , psHooks -> pvUserData );
10291029 if (fpSHP == SHPLIB_NULLPTR )
10301030 {
1031- char szErrorMsg [200 ];
1032- snprintf (szErrorMsg , sizeof (szErrorMsg ), "Failed to create file %s: %s" ,
1033- pszFullname , strerror (errno ));
1034- psHooks -> Error (szErrorMsg );
1035-
1031+ const size_t nMessageLen = strlen (pszFullname ) + 256 ;
1032+ char * pszMessage = STATIC_CAST (char * , malloc (nMessageLen ));
1033+ if (pszMessage )
1034+ {
1035+ snprintf (pszMessage , nMessageLen , "Failed to create file %s: %s" ,
1036+ pszFullname , strerror (errno ));
1037+ psHooks -> Error (pszMessage );
1038+ free (pszMessage );
1039+ }
10361040 free (pszFullname );
10371041 free (psSHP );
10381042 return SHPLIB_NULLPTR ;
@@ -1042,10 +1046,15 @@ SHPHandle SHPAPI_CALL SHPCreateLL(const char *pszLayer, int nShapeType,
10421046 SAFile fpSHX = psHooks -> FOpen (pszFullname , "w+b" , psHooks -> pvUserData );
10431047 if (fpSHX == SHPLIB_NULLPTR )
10441048 {
1045- char szErrorMsg [200 ];
1046- snprintf (szErrorMsg , sizeof (szErrorMsg ), "Failed to create file %s: %s" ,
1047- pszFullname , strerror (errno ));
1048- psHooks -> Error (szErrorMsg );
1049+ const size_t nMessageLen = strlen (pszFullname ) + 256 ;
1050+ char * pszMessage = STATIC_CAST (char * , malloc (nMessageLen ));
1051+ if (pszMessage )
1052+ {
1053+ snprintf (pszMessage , nMessageLen , "Failed to create file %s: %s" ,
1054+ pszFullname , strerror (errno ));
1055+ psHooks -> Error (pszMessage );
1056+ free (pszMessage );
1057+ }
10491058
10501059 free (pszFullname );
10511060 psHooks -> FClose (fpSHP );
0 commit comments