mappedfile: Avoid some allocations

If no error is passed, we don't need to do charset conversions.
This commit is contained in:
Matthias Clasen 2024-09-06 10:46:07 -04:00
parent ced5c6d960
commit bc444690d0

View File

@ -126,19 +126,22 @@ mapped_file_new_from_fd (int fd,
if (fstat (fd, &st) == -1)
{
int save_errno = errno;
gchar *display_filename = filename ? g_filename_display_name (filename) : NULL;
if (error != NULL)
{
int save_errno = errno;
gchar *display_filename = filename ? g_filename_display_name (filename) : NULL;
g_set_error (error,
G_FILE_ERROR,
g_file_error_from_errno (save_errno),
_("Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"),
display_filename ? display_filename : "fd",
display_filename ? "' " : "",
display_filename ? display_filename : "",
display_filename ? "'" : "",
g_strerror (save_errno));
g_free (display_filename);
g_set_error (error,
G_FILE_ERROR,
g_file_error_from_errno (save_errno),
_("Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"),
display_filename ? display_filename : "fd",
display_filename ? "' " : "",
display_filename ? display_filename : "",
display_filename ? "'" : "",
g_strerror (save_errno));
g_free (display_filename);
}
goto out;
}
@ -192,19 +195,22 @@ mapped_file_new_from_fd (int fd,
if (file->contents == MAP_FAILED)
{
int save_errno = errno;
gchar *display_filename = filename ? g_filename_display_name (filename) : NULL;
if (error != NULL)
{
int save_errno = errno;
gchar *display_filename = filename ? g_filename_display_name (filename) : NULL;
g_set_error (error,
G_FILE_ERROR,
g_file_error_from_errno (save_errno),
_("Failed to map %s%s%s%s: mmap() failed: %s"),
display_filename ? display_filename : "fd",
display_filename ? "' " : "",
display_filename ? display_filename : "",
display_filename ? "'" : "",
g_strerror (save_errno));
g_free (display_filename);
g_set_error (error,
G_FILE_ERROR,
g_file_error_from_errno (save_errno),
_("Failed to map %s%s%s%s: mmap() failed: %s"),
display_filename ? display_filename : "fd",
display_filename ? "' " : "",
display_filename ? display_filename : "",
display_filename ? "'" : "",
g_strerror (save_errno));
g_free (display_filename);
}
goto out;
}
@ -259,16 +265,20 @@ g_mapped_file_new (const gchar *filename,
fd = g_open (filename, (writable ? O_RDWR : O_RDONLY) | _O_BINARY | O_CLOEXEC, 0);
if (fd == -1)
{
int save_errno = errno;
gchar *display_filename = g_filename_display_name (filename);
if (error != NULL)
{
int save_errno = errno;
gchar *display_filename = g_filename_display_name (filename);
g_set_error (error,
G_FILE_ERROR,
g_file_error_from_errno (save_errno),
_("Failed to open file “%s”: open() failed: %s"),
display_filename,
g_strerror (save_errno));
g_free (display_filename);
}
g_set_error (error,
G_FILE_ERROR,
g_file_error_from_errno (save_errno),
_("Failed to open file “%s”: open() failed: %s"),
display_filename,
g_strerror (save_errno));
g_free (display_filename);
return NULL;
}