зеркало из https://github.com/mozilla/pjs.git
Bug 269739 - Limit command recursion to 10 levels.
ChatZilla only. r=samuel
This commit is contained in:
Родитель
546f7fd1e9
Коммит
c1e66d011a
|
@ -172,6 +172,9 @@ function CommandManager (defaultBundle)
|
||||||
{
|
{
|
||||||
this.commands = new Object();
|
this.commands = new Object();
|
||||||
this.defaultBundle = defaultBundle;
|
this.defaultBundle = defaultBundle;
|
||||||
|
this.currentDispatchDepth = 0;
|
||||||
|
this.maxDispatchDepth = 10;
|
||||||
|
this.dispatchUnwinding = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandManager.prototype.defaultFlags = 0;
|
CommandManager.prototype.defaultFlags = 0;
|
||||||
|
|
|
@ -381,6 +381,21 @@ function dispatch(text, e, isInteractive, flags)
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
/* one match, good for you */
|
/* one match, good for you */
|
||||||
|
var cm = client.commandManager;
|
||||||
|
|
||||||
|
if (cm.currentDispatchDepth >= cm.maxDispatchDepth)
|
||||||
|
{
|
||||||
|
/* We've reatched the max dispatch depth, so we need to unwind
|
||||||
|
* the entire stack of commands.
|
||||||
|
*/
|
||||||
|
cm.dispatchUnwinding = true;
|
||||||
|
}
|
||||||
|
// Don't start any new commands while unwinding.
|
||||||
|
if (cm.dispatchUnwinding)
|
||||||
|
break;
|
||||||
|
|
||||||
|
cm.currentDispatchDepth++;
|
||||||
|
|
||||||
var ex;
|
var ex;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -396,6 +411,19 @@ function dispatch(text, e, isInteractive, flags)
|
||||||
else
|
else
|
||||||
dd(formatException(ex), MT_ERROR);
|
dd(formatException(ex), MT_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cm.currentDispatchDepth--;
|
||||||
|
if (cm.dispatchUnwinding && (cm.currentDispatchDepth == 0))
|
||||||
|
{
|
||||||
|
/* Last level to unwind, and this is where we display the
|
||||||
|
* message. We need to leave it until here because displaying
|
||||||
|
* a message invokes a couple of commands itself, and we need
|
||||||
|
* to not be right on the dispatch limit for that.
|
||||||
|
*/
|
||||||
|
cm.dispatchUnwinding = false;
|
||||||
|
display(getMsg(MSG_ERR_MAX_DISPATCH_DEPTH, ary[0].name),
|
||||||
|
MT_ERROR);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -43,7 +43,7 @@ const __cz_version = "0.9.74";
|
||||||
const __cz_condition = "green";
|
const __cz_condition = "green";
|
||||||
const __cz_suffix = "";
|
const __cz_suffix = "";
|
||||||
const __cz_guid = "59c81df5-4b7a-477b-912d-4e0fdf64e5f2";
|
const __cz_guid = "59c81df5-4b7a-477b-912d-4e0fdf64e5f2";
|
||||||
const __cz_locale = "0.9.74";
|
const __cz_locale = "0.9.74.1";
|
||||||
|
|
||||||
var warn;
|
var warn;
|
||||||
var ASSERT;
|
var ASSERT;
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
#
|
#
|
||||||
### End of notes ###
|
### End of notes ###
|
||||||
|
|
||||||
locale.version = 0.9.74
|
locale.version = 0.9.74.1
|
||||||
locale.error = You are using ChatZilla %1$S, which requires the locale version %2$S. The currently selected locale, %3$S, is version %4$S, and therefore there may be problems running ChatZilla.\n\nIt is strongly advised that you update or remove the ChatZilla locale in question.
|
locale.error = You are using ChatZilla %1$S, which requires the locale version %2$S. The currently selected locale, %3$S, is version %4$S, and therefore there may be problems running ChatZilla.\n\nIt is strongly advised that you update or remove the ChatZilla locale in question.
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
|
@ -709,6 +709,7 @@ msg.err.notimplemented = Sorry, ``%1$S'' has not been implemented.
|
||||||
msg.err.required.param = Missing required parameter %1$S.
|
msg.err.required.param = Missing required parameter %1$S.
|
||||||
msg.err.ambigcommand = Ambiguous command, ``%1$S'', %2$S commands match [%3$S].
|
msg.err.ambigcommand = Ambiguous command, ``%1$S'', %2$S commands match [%3$S].
|
||||||
msg.err.required.nr.param = Missing %1$S parameters. This alias requires at least %2$S parameters.
|
msg.err.required.nr.param = Missing %1$S parameters. This alias requires at least %2$S parameters.
|
||||||
|
msg.err.max.dispatch.depth = Reached max dispatch depth while attempting to dispatch ``%1$S''.
|
||||||
|
|
||||||
## chatzilla error messages ##
|
## chatzilla error messages ##
|
||||||
msg.err.invalid.pref = Invalid value for preference %1$S (%2$S).
|
msg.err.invalid.pref = Invalid value for preference %1$S (%2$S).
|
||||||
|
|
Загрузка…
Ссылка в новой задаче