Very large scripts folders could crash the IDE, because it runs out

of Menu IDs (of which there are only 255 in Carbon). Fixed by stopping
examining the scripts folder when we allocate menu ID 200.

Fixes #959291. Need to backport.
This commit is contained in:
Jack Jansen 2004-06-03 13:31:51 +00:00
parent d6d35d954b
commit 8d562e6b4f
1 changed files with 9 additions and 3 deletions

View File

@ -275,17 +275,21 @@ class Application(FrameWork.Application):
self.makeusermenus()
def scriptswalk(self, top, menu, done=None):
if menu.id > 200:
import W
W.Message("Scripts folder not completely traversed: running out of menus")
return False
if done is None:
done = {}
if done.has_key(top):
return
return True
done[top] = 1
import os, string
try:
names = os.listdir(top)
except os.error:
FrameWork.MenuItem(menu, '(Scripts Folder not found)', None, None)
return
return True
savedir = os.getcwd()
os.chdir(top)
for name in names:
@ -306,7 +310,8 @@ class Application(FrameWork.Application):
menu.addseparator()
elif isdir:
submenu = FrameWork.SubMenu(menu, name)
self.scriptswalk(path, submenu, done)
if not self.scriptswalk(path, submenu, done):
return False
else:
creator, type = MacOS.GetCreatorAndType(path)
if type == 'TEXT':
@ -316,6 +321,7 @@ class Application(FrameWork.Application):
self._scripts[(menu.id, item.item)] = path
done[path] = 1
os.chdir(savedir)
return True
def domenu_script(self, id, item, window, event):
(what, message, when, where, modifiers) = event