=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/paste.c,v retrieving revision 1.29 retrieving revision 1.30 diff -c -r1.29 -r1.30 *** src/usr.bin/tmux/paste.c 2015/08/29 09:36:46 1.29 --- src/usr.bin/tmux/paste.c 2015/09/11 14:41:50 1.30 *************** *** 1,4 **** ! /* $OpenBSD: paste.c,v 1.29 2015/08/29 09:36:46 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: paste.c,v 1.30 2015/09/11 14:41:50 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 111,128 **** return (pb); } - /* Free the most recent buffer. */ - int - paste_free_top(void) - { - struct paste_buffer *pb; - - pb = paste_get_top(NULL); - if (pb == NULL) - return (-1); - return (paste_free_name(pb->name)); - } - /* Get a paste buffer by name. */ struct paste_buffer * paste_get_name(const char *name) --- 111,116 ---- *************** *** 136,155 **** return (RB_FIND(paste_name_tree, &paste_by_name, &pbfind)); } ! /* Free a paste buffer by name. */ ! int ! paste_free_name(const char *name) { - struct paste_buffer *pb, pbfind; - - if (name == NULL || *name == '\0') - return (-1); - - pbfind.name = (char *)name; - pb = RB_FIND(paste_name_tree, &paste_by_name, &pbfind); - if (pb == NULL) - return (-1); - RB_REMOVE(paste_name_tree, &paste_by_name, pb); RB_REMOVE(paste_time_tree, &paste_by_time, pb); if (pb->automatic) --- 124,133 ---- return (RB_FIND(paste_name_tree, &paste_by_name, &pbfind)); } ! /* Free a paste buffer. */ ! void ! paste_free(struct paste_buffer *pb) { RB_REMOVE(paste_name_tree, &paste_by_name, pb); RB_REMOVE(paste_time_tree, &paste_by_time, pb); if (pb->automatic) *************** *** 158,164 **** free(pb->data); free(pb->name); free(pb); - return (0); } /* --- 136,141 ---- *************** *** 179,185 **** if (paste_num_automatic < limit) break; if (pb->automatic) ! paste_free_name(pb->name); } pb = xmalloc(sizeof *pb); --- 156,162 ---- if (paste_num_automatic < limit) break; if (pb->automatic) ! paste_free(pb); } pb = xmalloc(sizeof *pb); *************** *** 257,263 **** int paste_set(char *data, size_t size, const char *name, char **cause) { ! struct paste_buffer *pb; if (cause != NULL) *cause = NULL; --- 234,240 ---- int paste_set(char *data, size_t size, const char *name, char **cause) { ! struct paste_buffer *pb, *old; if (cause != NULL) *cause = NULL; *************** *** 288,295 **** pb->automatic = 0; pb->order = paste_next_order++; ! if (paste_get_name(name) != NULL) ! paste_free_name(name); RB_INSERT(paste_name_tree, &paste_by_name, pb); RB_INSERT(paste_time_tree, &paste_by_time, pb); --- 265,272 ---- pb->automatic = 0; pb->order = paste_next_order++; ! if ((old = paste_get_name(name)) != NULL) ! paste_free(old); RB_INSERT(paste_name_tree, &paste_by_name, pb); RB_INSERT(paste_time_tree, &paste_by_time, pb);