mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-22 18:22:11 +01:00
mappedfile: Avoid some allocations
If no error is passed, we don't need to do charset conversions.
This commit is contained in:
parent
ced5c6d960
commit
bc444690d0
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user