mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-13 07:56:17 +01:00
glocalfileoutputstream: Tidy up error handling
After the recent reworking of this code it was possible for `g_close()` to be called on `fd == -1`, which is invalid. It would have reported an error, were errors not ignored. So it was harmless, but still best to fix. Simplify the error handling by combining both error labels and checking the state of `fd` dynamically. Coverity CID: #1450834 Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
This commit is contained in:
parent
01101813a5
commit
c4b4fecaef
@ -943,7 +943,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
_("Error when getting information for file “%s”: %s"),
|
_("Error when getting information for file “%s”: %s"),
|
||||||
display_name, g_strerror (errsv));
|
display_name, g_strerror (errsv));
|
||||||
g_free (display_name);
|
g_free (display_name);
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* not a regular file */
|
/* not a regular file */
|
||||||
@ -955,7 +955,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
G_IO_ERROR,
|
G_IO_ERROR,
|
||||||
G_IO_ERROR_IS_DIRECTORY,
|
G_IO_ERROR_IS_DIRECTORY,
|
||||||
_("Target file is a directory"));
|
_("Target file is a directory"));
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
else if (!is_symlink ||
|
else if (!is_symlink ||
|
||||||
#ifdef S_ISLNK
|
#ifdef S_ISLNK
|
||||||
@ -969,7 +969,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
G_IO_ERROR,
|
G_IO_ERROR,
|
||||||
G_IO_ERROR_NOT_REGULAR_FILE,
|
G_IO_ERROR_NOT_REGULAR_FILE,
|
||||||
_("Target file is not a regular file"));
|
_("Target file is not a regular file"));
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -983,7 +983,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
G_IO_ERROR_WRONG_ETAG,
|
G_IO_ERROR_WRONG_ETAG,
|
||||||
_("The file was externally modified"));
|
_("The file was externally modified"));
|
||||||
g_free (current_etag);
|
g_free (current_etag);
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
g_free (current_etag);
|
g_free (current_etag);
|
||||||
}
|
}
|
||||||
@ -1078,7 +1078,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
G_IO_ERROR_CANT_CREATE_BACKUP,
|
G_IO_ERROR_CANT_CREATE_BACKUP,
|
||||||
_("Backup file creation failed"));
|
_("Backup file creation failed"));
|
||||||
g_free (backup_filename);
|
g_free (backup_filename);
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
bfd = g_open (backup_filename,
|
bfd = g_open (backup_filename,
|
||||||
@ -1092,7 +1092,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
G_IO_ERROR_CANT_CREATE_BACKUP,
|
G_IO_ERROR_CANT_CREATE_BACKUP,
|
||||||
_("Backup file creation failed"));
|
_("Backup file creation failed"));
|
||||||
g_free (backup_filename);
|
g_free (backup_filename);
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If needed, Try to set the group of the backup same as the
|
/* If needed, Try to set the group of the backup same as the
|
||||||
@ -1109,7 +1109,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
g_unlink (backup_filename);
|
g_unlink (backup_filename);
|
||||||
g_close (bfd, NULL);
|
g_close (bfd, NULL);
|
||||||
g_free (backup_filename);
|
g_free (backup_filename);
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((_g_stat_gid (&original_stat) != _g_stat_gid (&tmp_statbuf)) &&
|
if ((_g_stat_gid (&original_stat) != _g_stat_gid (&tmp_statbuf)) &&
|
||||||
@ -1126,7 +1126,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
g_unlink (backup_filename);
|
g_unlink (backup_filename);
|
||||||
g_close (bfd, NULL);
|
g_close (bfd, NULL);
|
||||||
g_free (backup_filename);
|
g_free (backup_filename);
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1141,7 +1141,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
g_close (bfd, NULL);
|
g_close (bfd, NULL);
|
||||||
g_free (backup_filename);
|
g_free (backup_filename);
|
||||||
|
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_close (bfd, NULL);
|
g_close (bfd, NULL);
|
||||||
@ -1156,7 +1156,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
g_io_error_from_errno (errsv),
|
g_io_error_from_errno (errsv),
|
||||||
_("Error seeking in file: %s"),
|
_("Error seeking in file: %s"),
|
||||||
g_strerror (errsv));
|
g_strerror (errsv));
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1172,7 +1172,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
g_io_error_from_errno (errsv),
|
g_io_error_from_errno (errsv),
|
||||||
_("Error removing old file: %s"),
|
_("Error removing old file: %s"),
|
||||||
g_strerror (errsv));
|
g_strerror (errsv));
|
||||||
goto err_out2;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (readable)
|
if (readable)
|
||||||
@ -1189,7 +1189,7 @@ handle_overwrite_open (const char *filename,
|
|||||||
_("Error opening file “%s”: %s"),
|
_("Error opening file “%s”: %s"),
|
||||||
display_name, g_strerror (errsv));
|
display_name, g_strerror (errsv));
|
||||||
g_free (display_name);
|
g_free (display_name);
|
||||||
goto err_out2;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1207,15 +1207,16 @@ handle_overwrite_open (const char *filename,
|
|||||||
g_io_error_from_errno (errsv),
|
g_io_error_from_errno (errsv),
|
||||||
_("Error truncating file: %s"),
|
_("Error truncating file: %s"),
|
||||||
g_strerror (errsv));
|
g_strerror (errsv));
|
||||||
goto err_out;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return fd;
|
return fd;
|
||||||
|
|
||||||
err_out:
|
error:
|
||||||
g_close (fd, NULL);
|
if (fd >= 0)
|
||||||
err_out2:
|
g_close (fd, NULL);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user