diff --git a/pd/src/pd_guiprefs.tcl b/pd/src/pd_guiprefs.tcl
index 0dcf8c4020d18c7097e0e30df916600e7ffe9f2d..801330c2f011c9c4a1a268ac19ee0f2d8c7359f5 100644
--- a/pd/src/pd_guiprefs.tcl
+++ b/pd/src/pd_guiprefs.tcl
@@ -71,6 +71,7 @@ proc ::pd_guiprefs::update_recentfiles {afile save} {
     # remove duplicates first
     set index [lsearch -exact $::recentfiles_list $afile]
     set ::recentfiles_list [lreplace $::recentfiles_list $index $index]
+    #puts stderr "afile=$afile save=$save"
     # insert new one in the beginning and crop the list
     set ::recentfiles_list [linsert $::recentfiles_list 0 $afile]
     set ::recentfiles_list [lrange $::recentfiles_list 0 [expr $::total_recentfiles - 1]]
@@ -139,7 +140,7 @@ proc ::pd_guiprefs::get_config_win {adomain {akey} {arr false}} {
 }
 
 # ------------------------------------------------------------------------------
-# linux: read a config file and return its lines splitted.
+# linux: read a config file and return its lines split into individual entries
 #
 proc ::pd_guiprefs::get_config_x11 {adomain {akey} {arr false}} {
     set filename [file join $adomain $akey]
diff --git a/pd/src/s_main.c b/pd/src/s_main.c
index 6df21499232cee0514529e1b506da91e41bc7635..ce18046243fad9da7ae2510789322f6c272b0fd0 100644
--- a/pd/src/s_main.c
+++ b/pd/src/s_main.c
@@ -169,7 +169,11 @@ static void openit(const char *dirname, const char *filename)
         glob_evalfile(0, gensym(nameptr), gensym(dirbuf));
 		sys_vgui("pdtk_set_current_dir %s\n", filename);
         //sys_vgui("::pd_menus::update_recentfiles_menu .mbar.file 0\n");
-        sys_vgui("::pd_guiprefs::update_recentfiles %s 1\n", filename);
+#ifndef MSW
+        sys_vgui("::pd_guiprefs::update_recentfiles %s/%s 1\n", dirname, filename);
+#else
+        sys_vgui("::pd_guiprefs::update_recentfiles %s\%s 1\n", dirname, filename);
+#endif
     }
     else
         error("%s: can't open", filename);