From 8bf282942427103523c1222c3f48eb70f5ff6b31 Mon Sep 17 00:00:00 2001
From: mirabilos <m@mirbsd.org>
Date: Sun, 5 Aug 2018 18:23:39 +0200
Subject: [PATCH] range-wrap DeclareUnicodeCharacter

---
 unicodedomino.sty | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/unicodedomino.sty b/unicodedomino.sty
index 00df29c..88dad59 100644
--- a/unicodedomino.sty
+++ b/unicodedomino.sty
@@ -46,6 +46,18 @@
 \uppercase\expandafter{\UTFviii@tmp}%
 \endgroup%
 
+% now fixup to disallow too large definitions
+\let\unicodedomino@parse@XML@charref\parse@XML@charref%
+\gdef\parse@XML@charref{%
+ \ifnum\count@>"10FFFF\relax%
+  \PackageError{inputenc}{%
+   Cannot define Unicode char value\space%
+   \unicodedomino@shex\the\count@\relax\space (too large)%
+  }%
+ \fi%
+ \unicodedomino@parse@XML@charref%
+}%
+
 % nicer printing of codepoint hex numbers, not strictly necessary
 \def\unicodedomino@codepoint#1{%
  \ifnum#1>1048575%
@@ -68,6 +80,14 @@
  \UTFviii@hexdigit{\numexpr#1\ifnum#1>0-((#1-8)/16)*16\fi\relax}%
 }%
 
+% and arbitrary numbers
+\def\unicodedomino@shex#1\relax{%
+ \ifnum#1>15 %
+  \expandafter\unicodedomino@shex\expandafter\the\numexpr(#1-8)/16\relax%
+ \fi%
+ \UTFviii@hexdigit{\numexpr#1\ifnum#1>0-((#1-8)/16)*16\fi\relax}%
+}%
+
 % override to beautify the output, not strictly necessary but requested
 \gdef\UTFviii@splitcsname#1:#2\relax{%
  #2 (\expandafter\unicodedomino@codepoint\expandafter{%
-- 
GitLab