diff options
author | Allison Ryan Lortie <desrt@desrt.ca> | 2015-11-30 10:13:46 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-12-16 07:47:53 -0500 |
commit | 30359e740953b596d6c3d980dba36dd131681a1f (patch) | |
tree | e2d2552ad99b4ca1dd8cec9c4992976634235931 | |
parent | c2d0c40bffa02a0981c03115179c3373a057f1ec (diff) | |
download | glib-30359e740953b596d6c3d980dba36dd131681a1f.tar.gz |
file monitors: reorder some code to avoid segfault
We must initialise '->source' before we use fields inside of it.
https://bugzilla.gnome.org/show_bug.cgi?id=758823
-rw-r--r-- | gio/glocalfilemonitor.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gio/glocalfilemonitor.c b/gio/glocalfilemonitor.c index dbd62ec2f..49a4dd210 100644 --- a/gio/glocalfilemonitor.c +++ b/gio/glocalfilemonitor.c @@ -748,6 +748,9 @@ g_local_file_monitor_start (GLocalFileMonitor *local_monitor, g_assert (!local_monitor->source); + source = g_file_monitor_source_new (local_monitor, filename, is_directory, flags); + local_monitor->source = source; /* owns the ref */ + if (is_directory && !class->mount_notify && (flags & G_FILE_MONITOR_WATCH_MOUNTS)) { #ifdef G_OS_WIN32 @@ -771,9 +774,6 @@ g_local_file_monitor_start (GLocalFileMonitor *local_monitor, #endif } - source = g_file_monitor_source_new (local_monitor, filename, is_directory, flags); - local_monitor->source = source; /* owns the ref */ - G_LOCAL_FILE_MONITOR_GET_CLASS (local_monitor)->start (local_monitor, source->dirname, source->basename, source->filename, source); |