summaryrefslogtreecommitdiff
path: root/src/xsmfns.c
diff options
context:
space:
mode:
authorJan D <jan.h.d@swipnet.se>2010-08-11 14:34:46 +0200
committerJan D <jan.h.d@swipnet.se>2010-08-11 14:34:46 +0200
commit42ca463309fdb17f04a72dad92696312bf242328 (patch)
treee4e9f8618dbe65ded7a6e9e5e38f6ffbb10dc983 /src/xsmfns.c
parent5e3b9a89ad0dc6fd34d91798d227ed29a905aa26 (diff)
downloademacs-42ca463309fdb17f04a72dad92696312bf242328.tar.gz
Fix -Wwrite_strings in general and for Gtk+ specific code.
* callproc.c (synch_process_death): Make const. (Fcall_process): Make signame const. * emacs.c (main): Pass char[] to putenv instead of literal. * floatfns.c (matherr): Use a const char* variable for x->name. * font.c (font_open_by_name): Make name const. * font.h (font_open_by_name): Make name const. * gtkutil.c (get_utf8_string): Always return an allocated string. Parameter is const. (create_dialog, xg_create_one_menuitem, create_menus) (xg_item_label_same_p, xg_update_menu_item): Free result from get_utf8_string. (xg_separator_p, xg_item_label_same_p): label is const. * gtkutil.h: Replace widget_value with struct _widget_value. (enum button_type, struct _widget_value): Remove and use the one from keyboard.h. * keyboard.h (_widget_value): Add defined USE_GTK. Replace Boolean with unsigned char and XtPointer with void *. * menu.c (Fx_popup_menu): error_name is const. * menu.h (w32_menu_show, ns_menu_show, xmenu_show): error parameter is const char **. * w32menu.c (w32_menu_show): * nsmenu.m (ns_menu_show): error parameter is const char **. * process.h (synch_process_death): Is const char*. * xmenu.c (Fx_popup_dialog): error_name is const char*. (xmenu_show): error parameter is const char **. pane_string is const char *. (button_names): Is const char *. (xdialog_show): error_name and pane_string is const. * xrdb.c (get_system_app): Make path const and use char *p for non-const char. * xselect.c (Fx_get_atom_name): Use char empty[] instead of literal "". * xsmfns.c (NOSPLASH_OPT): Change to char[]. (smc_save_yourself_CB): Do xstrdup on all ->type and ->name for props. Free them at the end. * xterm.c (emacs_class): New char[] for EMACS_CLASS. (xim_open_dpy, xim_initialize, xim_close_dpy): Use emacs_class. (x_term_init): Use char[] display_opt and name_opt instead of string literal. file is const char*.
Diffstat (limited to 'src/xsmfns.c')
-rw-r--r--src/xsmfns.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/xsmfns.c b/src/xsmfns.c
index 0096110bd46..79dccfa55e1 100644
--- a/src/xsmfns.c
+++ b/src/xsmfns.c
@@ -87,7 +87,7 @@ Lisp_Object Vx_session_previous_id;
/* The option to start Emacs without the splash screen when
restarting Emacs. */
-#define NOSPLASH_OPT "--no-splash"
+static char NOSPLASH_OPT[] = "--no-splash";
/* The option to make Emacs start in the given directory. */
@@ -198,14 +198,14 @@ smc_save_yourself_CB (SmcConn smcConn,
SmPropValue values[20];
int val_idx = 0;
int props_idx = 0;
-
+ int i;
char *cwd = NULL;
char *smid_opt, *chdir_opt = NULL;
/* How to start a new instance of Emacs. */
props[props_idx] = &prop_ptr[props_idx];
- props[props_idx]->name = SmCloneCommand;
- props[props_idx]->type = SmLISTofARRAY8;
+ props[props_idx]->name = xstrdup (SmCloneCommand);
+ props[props_idx]->type = xstrdup (SmLISTofARRAY8);
props[props_idx]->num_vals = 1;
props[props_idx]->vals = &values[val_idx++];
props[props_idx]->vals[0].length = strlen (emacs_program);
@@ -214,8 +214,8 @@ smc_save_yourself_CB (SmcConn smcConn,
/* The name of the program. */
props[props_idx] = &prop_ptr[props_idx];
- props[props_idx]->name = SmProgram;
- props[props_idx]->type = SmARRAY8;
+ props[props_idx]->name = xstrdup (SmProgram);
+ props[props_idx]->type = xstrdup (SmARRAY8);
props[props_idx]->num_vals = 1;
props[props_idx]->vals = &values[val_idx++];
props[props_idx]->vals[0].length = strlen (SSDATA (Vinvocation_name));
@@ -224,8 +224,8 @@ smc_save_yourself_CB (SmcConn smcConn,
/* How to restart Emacs. */
props[props_idx] = &prop_ptr[props_idx];
- props[props_idx]->name = SmRestartCommand;
- props[props_idx]->type = SmLISTofARRAY8;
+ props[props_idx]->name = xstrdup (SmRestartCommand);
+ props[props_idx]->type = xstrdup (SmLISTofARRAY8);
/* /path/to/emacs, --smid=xxx --no-splash --chdir=dir */
props[props_idx]->num_vals = 4;
props[props_idx]->vals = &values[val_idx];
@@ -258,8 +258,8 @@ smc_save_yourself_CB (SmcConn smcConn,
/* User id. */
props[props_idx] = &prop_ptr[props_idx];
- props[props_idx]->name = SmUserID;
- props[props_idx]->type = SmARRAY8;
+ props[props_idx]->name = xstrdup (SmUserID);
+ props[props_idx]->type = xstrdup (SmARRAY8);
props[props_idx]->num_vals = 1;
props[props_idx]->vals = &values[val_idx++];
props[props_idx]->vals[0].length = strlen (SSDATA (Vuser_login_name));
@@ -270,8 +270,8 @@ smc_save_yourself_CB (SmcConn smcConn,
if (cwd)
{
props[props_idx] = &prop_ptr[props_idx];
- props[props_idx]->name = SmCurrentDirectory;
- props[props_idx]->type = SmARRAY8;
+ props[props_idx]->name = xstrdup (SmCurrentDirectory);
+ props[props_idx]->type = xstrdup (SmARRAY8);
props[props_idx]->num_vals = 1;
props[props_idx]->vals = &values[val_idx++];
props[props_idx]->vals[0].length = strlen (cwd);
@@ -286,6 +286,11 @@ smc_save_yourself_CB (SmcConn smcConn,
xfree (chdir_opt);
free (cwd);
+ for (i = 0; i < props_idx; ++i)
+ {
+ xfree (props[i]->type);
+ xfree (props[i]->name);
+ }
/* See if we maybe shall interact with the user. */
if (interactStyle != SmInteractStyleAny