From 5c91b9f8a88e06f057a6a08b0a755a224d08e019 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Sat, 18 Nov 2006 01:37:52 +0000
Subject: context 17nov06 update

git-svn-id: svn://tug.org/texlive/trunk@2449 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/context/base/filt-ini.tex | 39 ++++++++++++++++++++-----
 1 file changed, 31 insertions(+), 8 deletions(-)

(limited to 'Master/texmf-dist/tex/context/base/filt-ini.tex')

diff --git a/Master/texmf-dist/tex/context/base/filt-ini.tex b/Master/texmf-dist/tex/context/base/filt-ini.tex
index d6e03f9684a..9e2af2c6e6e 100644
--- a/Master/texmf-dist/tex/context/base/filt-ini.tex
+++ b/Master/texmf-dist/tex/context/base/filt-ini.tex
@@ -64,6 +64,16 @@
       2: filtre -- inconnu
 \stopmessages
 
+% We need the {\??ot::#1} check because otherwise aleph will crash. Taco's
+% torture test:
+%
+% \ocp\ArabicContext = contextual
+%
+% \dorecurse {5000} {
+%     \message{[\recurselevel]}
+%     \ocplist\Arabic=\addbeforeocplist 1 \ArabicContext \nullocplist
+% }
+
 %D \macros
 %D   {definefiltersynonym}
 
@@ -82,11 +92,15 @@
 %D \macros
 %D   {definefiltersequence}
 
-\def\definefiltersequence%
+\def\definefiltersequence
   {\dodoubleargument\dodefinefiltersequence}
 
+% \def\dodefinefiltersequence[#1][#2]%
+%   {\setvalue{\??ot#1}{#2}}
+
 \def\dodefinefiltersequence[#1][#2]%
-  {\setvalue{\??ot#1}{#2}}
+  {\setxvalue{\??ot#1}{#2}%
+   \letgvalue{\??ot::#1}\v!stop}
 
 %D \macros
 %D   {usefiltersequence}
@@ -121,13 +135,22 @@
      \expandafter\noexpand\csname\??or:\!!stringa\endcsname
    \to \scratchtoks}
 
+% \unexpanded\def\usefiltersequence[#1]%
+%   {\edef\currentfiltersequence{\getvalue{\??ot#1}}%
+%    \scratchtoks\emptytoks
+%    \processcommacommand[\currentfiltersequence]\dodousefiltersequence
+%    % \showthe\scratchtoks
+%    \expanded{\ocplist\csname\??ot:#1\endcsname=\the\scratchtoks}\nullocplist
+%    \expanded{\pushocplist\csname\??ot:#1\endcsname}\relax}
+
 \unexpanded\def\usefiltersequence[#1]%
-  {\edef\currentfiltersequence{\getvalue{\??ot#1}}%
-   \scratchtoks\emptytoks
-   \processcommacommand[\currentfiltersequence]\dodousefiltersequence
-   % \showthe\scratchtoks
-   \expanded{\ocplist\csname\??ot:#1\endcsname=\the\scratchtoks}\nullocplist
-   \expanded{\pushocplist\csname\??ot:#1\endcsname}\relax}
+  {\doifdefined{\??ot::#1}%
+     {\doifvalue{\??ot::#1}\v!stop
+         {\scratchtoks\emptytoks
+          \expanded{\processcommalist[\getvalue{\??ot#1}]}\dodousefiltersequence
+          \expanded{\global\ocplist\csname\??ot:#1\endcsname=\the\scratchtoks}\nullocplist
+          \letgvalue{\??ot::#1}\v!start}%
+       \expanded{\pushocplist\csname\??ot:#1\endcsname}\relax}}
 
 %D \macros
 %D   {usefilter}
-- 
cgit v1.2.3

