components/groff/patches/grn-main.cpp.patch
author osayama <osamu.sayama@oracle.com>
Thu, 29 Jan 2015 19:46:09 -0800
branchs11-update
changeset 3706 bd45826ad92c
permissions -rw-r--r--
PSARC 2013/394 groff version 1.22.2 17285077 groff package update to version 1.22 17464860 groffer fails finding support library 17621259 ggrn dumps core with 55 and more arguments 18122012 grolbp segfaults on free parameter 18159500 groff should not use ambiguous width character 18450560 /usr/bin/grops dumps core with invalid argument value 19766047 grog and gropdf should be moved in text/groff pacakge 20062059 groff section 4/5 man pages are incorrectly labeled and referenced internally 20062339 groff(5) has incorrect content 19873798 groff handles long .TH as overlapping in header and foot 20367208 preconv should use UCS-4[LE|BE] codeset in Solaris 11 UR
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3706
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     1
Prevent grn from core dumping when given more than 50 command lines
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     2
arguments (CR #17621259).
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     3
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     4
This fix is not currently in the latest groff sources, and has been passed
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     5
upstream.
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     6
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     7
--- groff-1.22.2/src/preproc/grn/main.cpp.orig	2014-01-23 16:54:20.488279600 -0800
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     8
+++ groff-1.22.2/src/preproc/grn/main.cpp	2014-01-23 16:58:22.672837243 -0800
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     9
@@ -92,6 +92,8 @@
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    10
 extern POINT *PTInit();
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    11
 extern POINT *PTMakePoint(double x, double y, POINT **pplist);
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    12
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    13
+#define INIT_FILE_SIZE 50  /* Initial size of array of files from cmd line. */
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    14
+#define FILE_SIZE_INCR 50  /* Amount to increase array of files by. */
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    15
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    16
 #define SUN_SCALEFACTOR 0.70
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    17
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    18
@@ -244,6 +246,25 @@
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    19
 }
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    20
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    21
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    22
+/* Add a new file entry in the array, expanding array if needs be. */
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    23
+
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    24
+char **
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    25
+add_file(char **file, char *new_file, int *count, int *cur_size)
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    26
+{
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    27
+  if (*count >= *cur_size) {
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    28
+    *cur_size += FILE_SIZE_INCR;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    29
+    file = (char **) realloc((char **) file, *cur_size * sizeof(char *));
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    30
+    if (file == NULL) {
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    31
+      fatal("unable to extend file array");
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    32
+    }
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    33
+  }
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    34
+  file[*count] = new_file;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    35
+  *count += 1;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    36
+
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    37
+  return file;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    38
+}
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    39
+
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    40
+
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    41
 /*----------------------------------------------------------------------------*
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    42
  | Routine:	main (argument_count, argument_pointer)
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    43
  |
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    44
@@ -262,18 +283,22 @@
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    45
   register FILE *fp;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    46
   register int k;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    47
   register char c;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    48
-  register int gfil = 0;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    49
-  char *file[50];
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    50
+  int gfil = 0;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    51
+  char **file = NULL;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    52
+  int file_cur_size = INIT_FILE_SIZE;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    53
   char *operand(int *argcp, char ***argvp);
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    54
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    55
+  if ((file = (char **) malloc(file_cur_size * sizeof(char *))) == NULL) {
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    56
+    fatal("unable to create file array");
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    57
+  }
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    58
   while (--argc) {
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    59
     if (**++argv != '-')
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    60
-      file[gfil++] = *argv;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    61
+      file = add_file(file, *argv, &gfil, &file_cur_size);
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    62
     else
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    63
       switch (c = (*argv)[1]) {
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    64
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    65
       case 0:
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    66
-	file[gfil++] = NULL;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    67
+	file = add_file(file, NULL, &gfil, &file_cur_size);
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    68
 	break;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    69
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    70
       case 'C':		/* compatibility mode */