diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/xsmfns.c | 46 |
2 files changed, 27 insertions, 24 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 0cc0a42b349..7874910c813 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2015-03-28 Jan Djärv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * xsmfns.c (smc_save_yourself_CB): Return if Vinvocation_name or | ||
| 4 | user_login_name are not strings. | ||
| 5 | |||
| 1 | 2015-03-28 Eli Zaretskii <eliz@gnu.org> | 6 | 2015-03-28 Eli Zaretskii <eliz@gnu.org> |
| 2 | 7 | ||
| 3 | * w32.c (sys_connect): Fix a mistake in previous commit that broke | 8 | * w32.c (sys_connect): Fix a mistake in previous commit that broke |
diff --git a/src/xsmfns.c b/src/xsmfns.c index 375b51c4466..48aaa9bef8a 100644 --- a/src/xsmfns.c +++ b/src/xsmfns.c | |||
| @@ -169,6 +169,11 @@ smc_save_yourself_CB (SmcConn smcConn, | |||
| 169 | int props_idx = 0; | 169 | int props_idx = 0; |
| 170 | int i; | 170 | int i; |
| 171 | char *smid_opt, *chdir_opt = NULL; | 171 | char *smid_opt, *chdir_opt = NULL; |
| 172 | Lisp_Object user_login_name = Fuser_login_name (Qnil); | ||
| 173 | |||
| 174 | // Must have these. | ||
| 175 | if (! STRINGP (Vinvocation_name) || ! STRINGP (user_login_name)) | ||
| 176 | return; | ||
| 172 | 177 | ||
| 173 | /* How to start a new instance of Emacs. */ | 178 | /* How to start a new instance of Emacs. */ |
| 174 | props[props_idx] = &prop_ptr[props_idx]; | 179 | props[props_idx] = &prop_ptr[props_idx]; |
| @@ -180,32 +185,25 @@ smc_save_yourself_CB (SmcConn smcConn, | |||
| 180 | props[props_idx]->vals[0].value = emacs_program; | 185 | props[props_idx]->vals[0].value = emacs_program; |
| 181 | ++props_idx; | 186 | ++props_idx; |
| 182 | 187 | ||
| 183 | if (STRINGP (Vinvocation_name)) | 188 | /* The name of the program. */ |
| 184 | { | 189 | props[props_idx] = &prop_ptr[props_idx]; |
| 185 | /* The name of the program. */ | 190 | props[props_idx]->name = xstrdup (SmProgram); |
| 186 | props[props_idx] = &prop_ptr[props_idx]; | 191 | props[props_idx]->type = xstrdup (SmARRAY8); |
| 187 | props[props_idx]->name = xstrdup (SmProgram); | 192 | props[props_idx]->num_vals = 1; |
| 188 | props[props_idx]->type = xstrdup (SmARRAY8); | 193 | props[props_idx]->vals = &values[val_idx++]; |
| 189 | props[props_idx]->num_vals = 1; | 194 | props[props_idx]->vals[0].length = SBYTES (Vinvocation_name); |
| 190 | props[props_idx]->vals = &values[val_idx++]; | 195 | props[props_idx]->vals[0].value = SDATA (Vinvocation_name); |
| 191 | props[props_idx]->vals[0].length = SBYTES (Vinvocation_name); | 196 | ++props_idx; |
| 192 | props[props_idx]->vals[0].value = SDATA (Vinvocation_name); | ||
| 193 | ++props_idx; | ||
| 194 | } | ||
| 195 | 197 | ||
| 196 | /* User id. */ | 198 | /* User id. */ |
| 197 | Lisp_Object user_login_name = Fuser_login_name (Qnil); | 199 | props[props_idx] = &prop_ptr[props_idx]; |
| 198 | if (STRINGP (user_login_name)) | 200 | props[props_idx]->name = xstrdup (SmUserID); |
| 199 | { | 201 | props[props_idx]->type = xstrdup (SmARRAY8); |
| 200 | props[props_idx] = &prop_ptr[props_idx]; | 202 | props[props_idx]->num_vals = 1; |
| 201 | props[props_idx]->name = xstrdup (SmUserID); | 203 | props[props_idx]->vals = &values[val_idx++]; |
| 202 | props[props_idx]->type = xstrdup (SmARRAY8); | 204 | props[props_idx]->vals[0].length = SBYTES (user_login_name); |
| 203 | props[props_idx]->num_vals = 1; | 205 | props[props_idx]->vals[0].value = SDATA (user_login_name); |
| 204 | props[props_idx]->vals = &values[val_idx++]; | 206 | ++props_idx; |
| 205 | props[props_idx]->vals[0].length = SBYTES (user_login_name); | ||
| 206 | props[props_idx]->vals[0].value = SDATA (user_login_name); | ||
| 207 | ++props_idx; | ||
| 208 | } | ||
| 209 | 207 | ||
| 210 | char *cwd = get_current_dir_name (); | 208 | char *cwd = get_current_dir_name (); |
| 211 | if (cwd) | 209 | if (cwd) |