changeset 30244:4fe897f5db8e

print_usage.m: Fix error on invalid texinfo (bug #61363). * scripts/help/print_usage.m (get_usage_texinfo): Do not call __makeinfo__ if help string doesn't contain a @def* macro.
author Markus Mützel <markus.muetzel@gmx.de>
date Thu, 21 Oct 2021 16:42:38 +0200
parents a4061ae5ff79
children 789d0e220350
files scripts/help/print_usage.m
diffstat 1 files changed, 15 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/help/print_usage.m	Tue Oct 19 14:26:04 2021 +0200
+++ b/scripts/help/print_usage.m	Thu Oct 21 16:42:38 2021 +0200
@@ -117,23 +117,24 @@
   ## include things such as @deftypefn, @deftypefnx, @defvar, etc. and their
   ## corresponding @end's.
   def_idx = strfind (help_text, "@def");
-  if (! isempty (def_idx))
-    endf_idx = strfind (help_text, "@end def");
-    def_idx = sort ([def_idx, endf_idx]);
-    endl_idx = find (help_text == "\n");
-    buffer = "";
-    for k = 1:length (def_idx)
-      endl = endl_idx(find (endl_idx > def_idx(k), 1));
-      if (isempty (endl))
-        buffer = [buffer, help_text(def_idx(k):end), "\n"];
-      else
-        buffer = [buffer, help_text(def_idx(k):endl)];
-      endif
-    endfor
-  else
+  if (isempty (def_idx))
     [retval, status] = get_usage_plain_text (help_text, max_len);
+    return;
   endif
 
+  endf_idx = strfind (help_text, "@end def");
+  def_idx = sort ([def_idx, endf_idx]);
+  endl_idx = find (help_text == "\n");
+  buffer = "";
+  for k = 1:length (def_idx)
+    endl = endl_idx(find (endl_idx > def_idx(k), 1));
+    if (isempty (endl))
+      buffer = [buffer, help_text(def_idx(k):end), "\n"];
+    else
+      buffer = [buffer, help_text(def_idx(k):endl)];
+    endif
+  endfor
+
   ## Run makeinfo to generate plain text
   [retval, status] = __makeinfo__ (buffer, "plain text");