To: vim-dev@vim.org Subject: Patch 6.0aw.001 Fcc: outbox From: Bram Moolenaar ------------ Patch 6.0aw.001 Problem: When using histget() with an index that's below all existing entries, Vim would hang. (Yegappan Lakshmanan) Solution: Break out of the loop when all history items have been checked. Files: src/ex_getln.c *** ../vim-6.0aw/src/ex_getln.c Sun Sep 16 22:21:05 2001 --- src/ex_getln.c Mon Sep 17 10:57:06 2001 *************** *** 3722,3727 **** --- 3722,3728 ---- { int i; histentry_T *hist; + int wrapped = FALSE; if (hislen == 0 || histype < 0 || histype >= HIST_COUNT || (i = hisidx[histype]) < 0 || num == 0) *************** *** 3732,3740 **** { while (hist[i].hisnum > num) if (--i < 0) i += hislen; ! if (hist[i].hisnum == num ! && hist[i].hisstr != NULL) return i; } else if (-num <= hislen) --- 3733,3745 ---- { while (hist[i].hisnum > num) if (--i < 0) + { + if (wrapped) + break; i += hislen; ! wrapped = TRUE; ! } ! if (hist[i].hisnum == num && hist[i].hisstr != NULL) return i; } else if (-num <= hislen) -- hundred-and-one symptoms of being an internet addict: 225. You sign up for free subscriptions for all the computer magazines /// Bram Moolenaar -- Bram@moolenaar.net -- http://www.moolenaar.net \\\ ((( Creator of Vim -- http://vim.sf.net -- ftp://ftp.vim.org/pub/vim ))) \\\ Help me helping AIDS orphans in Uganda - http://iccf-holland.org ///