@@ -204,16 +204,20 @@ int MMG5_Set_inputSolName(MMG5_pMesh mesh,MMG5_pSol sol, const char* solin) {
204204 int mesh_len = strlen (mesh -> namein )+ 1 ;
205205 MMG5_SAFE_CALLOC (sol -> namein ,mesh_len ,char ,return 0 );
206206 strcpy (sol -> namein ,mesh -> namein );
207- ptr = strstr (sol -> namein ,".mesh" );
207+
208+ /* Get last dot character to avoid issues with <basename>.mesh.mesh files */
209+ char * dot = strrchr (sol -> namein ,'.' );
210+ ptr = strstr (dot ,".mesh" );
208211 if ( ptr ) {
209- /* the sol file is renamed with the meshfile without extension */
212+ /* the sol file is renamed concatening the mesh basename and the sol extension */
210213 * ptr = '\0' ;
211- MMG5_SAFE_REALLOC (sol -> namein ,mesh_len ,(strlen (sol -> namein )+ 1 ),char ,
214+ MMG5_SAFE_REALLOC (sol -> namein ,mesh_len ,(strlen (sol -> namein )+ 5 ),char ,
212215 "input sol name" ,return 0 );
213216 }
214- MMG5_ADD_MEM (mesh ,(strlen (sol -> namein )+ 1 )* sizeof (char ),"input sol name" ,
217+ MMG5_ADD_MEM (mesh ,(strlen (sol -> namein )+ 5 )* sizeof (char ),"input sol name" ,
215218 fprintf (stderr ," Exit program.\n" );
216219 return 0 );
220+ strcat (sol -> namein ,".sol" );
217221 }
218222 else {
219223 MMG5_ADD_MEM (mesh ,9 * sizeof (char ),"input sol name" ,
@@ -393,7 +397,9 @@ int MMG5_Set_outputSolName(MMG5_pMesh mesh,MMG5_pSol sol, const char* solout) {
393397 }
394398 else {
395399 if ( mesh -> nameout && strlen (mesh -> nameout ) ) {
396- ptr = strstr (mesh -> nameout ,".mesh" );
400+ /* Get last dot character to avoid issues with <basename>.mesh.mesh files */
401+ char * dot = strrchr (mesh -> nameout ,'.' );
402+ ptr = strstr (dot ,".mesh" );
397403 if ( ptr ) {
398404 MMG5_SAFE_CALLOC (sol -> nameout ,strlen (mesh -> nameout )+ 1 ,char ,return 0 );
399405 oldsize = strlen (mesh -> nameout )+ 1 ;
@@ -403,7 +409,8 @@ int MMG5_Set_outputSolName(MMG5_pMesh mesh,MMG5_pSol sol, const char* solout) {
403409 oldsize = strlen (mesh -> nameout )+ 6 ;
404410 }
405411 strcpy (sol -> nameout ,mesh -> nameout );
406- ptr = strstr (sol -> nameout ,".mesh" );
412+ dot = strrchr (sol -> nameout ,'.' );
413+ ptr = strstr (dot ,".mesh" );
407414 if ( ptr )
408415 /* the sol file is renamed with the meshfile without extension */
409416 * ptr = '\0' ;
0 commit comments