[BACK]Return to window-copy.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/window-copy.c between version 1.131 and 1.132

version 1.131, 2015/08/28 12:25:42 version 1.132, 2015/08/29 09:25:00
Line 782 
Line 782 
 {  {
         struct window_copy_mode_data    *data = wp->modedata;          struct window_copy_mode_data    *data = wp->modedata;
         struct screen                   *s = &data->screen;          struct screen                   *s = &data->screen;
         size_t                           inputlen, n;          const char                      *bufdata;
           size_t                           inputlen, n, bufsize;
         int                              np;          int                              np;
         struct paste_buffer             *pb;          struct paste_buffer             *pb;
         u_char                           ch;          u_char                           ch;
Line 800 
Line 801 
                 *data->inputstr = '\0';                  *data->inputstr = '\0';
                 break;                  break;
         case MODEKEYEDIT_PASTE:          case MODEKEYEDIT_PASTE:
                 if ((pb = paste_get_top()) == NULL)                  if ((pb = paste_get_top(NULL)) == NULL)
                         break;                          break;
                 for (n = 0; n < pb->size; n++) {                  bufdata = paste_buffer_data(pb, &bufsize);
                         ch = (u_char) pb->data[n];                  for (n = 0; n < bufsize; n++) {
                           ch = (u_char)bufdata[n];
                         if (ch < 32 || ch == 127)                          if (ch < 32 || ch == 127)
                                 break;                                  break;
                 }                  }
                 inputlen = strlen(data->inputstr);                  inputlen = strlen(data->inputstr);
   
                 data->inputstr = xrealloc(data->inputstr, inputlen + n + 1);                  data->inputstr = xrealloc(data->inputstr, inputlen + n + 1);
                 memcpy(data->inputstr + inputlen, pb->data, n);                  memcpy(data->inputstr + inputlen, bufdata, n);
                 data->inputstr[inputlen + n] = '\0';                  data->inputstr[inputlen + n] = '\0';
                 break;                  break;
         case MODEKEYEDIT_ENTER:          case MODEKEYEDIT_ENTER:
Line 1491 
Line 1493 
 {  {
         char                            *buf;          char                            *buf;
         struct paste_buffer             *pb;          struct paste_buffer             *pb;
         size_t                           len;          const char                      *bufdata;
           size_t                           len, bufsize;
         struct screen_write_ctx          ctx;          struct screen_write_ctx          ctx;
   
         buf = window_copy_get_selection(wp, &len);          buf = window_copy_get_selection(wp, &len);
Line 1504 
Line 1507 
                 screen_write_stop(&ctx);                  screen_write_stop(&ctx);
         }          }
   
         if (bufname == NULL || *bufname == '\0') {          if (bufname == NULL || *bufname == '\0')
                 pb = paste_get_top();                  pb = paste_get_top(&bufname);
                 if (pb != NULL)          else
                         bufname = pb->name;  
         } else  
                 pb = paste_get_name(bufname);                  pb = paste_get_name(bufname);
         if (pb != NULL) {          if (pb != NULL) {
                 buf = xrealloc(buf, len + pb->size);                  bufdata = paste_buffer_data(pb, &bufsize);
                 memmove(buf + pb->size, buf, len);                  buf = xrealloc(buf, len + bufsize);
                 memcpy(buf, pb->data, pb->size);                  memmove(buf + bufsize, buf, len);
                 len += pb->size;                  memcpy(buf, bufdata, bufsize);
                   len += bufsize;
         }          }
         if (paste_set(buf, len, bufname, NULL) != 0)          if (paste_set(buf, len, bufname, NULL) != 0)
                 free(buf);                  free(buf);

Legend:
Removed from v.1.131  
changed lines
  Added in v.1.132