|
10 | 10 |
|
11 | 11 | #include "access/gist.h"
|
12 | 12 | #include "access/rtree.h"
|
| 13 | +#include "lib/stringinfo.h" |
13 | 14 | #include "utils/elog.h"
|
14 | 15 | #include "utils/palloc.h"
|
15 | 16 | #include "utils/builtins.h"
|
@@ -107,47 +108,43 @@ cube_in(char *str)
|
107 | 108 | * char *out_func(char *);
|
108 | 109 | */
|
109 | 110 | char *
|
110 |
| -cube_out(NDBOX * cube) |
| 111 | +cube_out(NDBOX *cube) |
111 | 112 | {
|
112 |
| - char *result; |
113 |
| - char *p; |
114 |
| - int equal = 1; |
| 113 | + StringInfoData buf; |
| 114 | + bool equal = true; |
115 | 115 | int dim = cube->dim;
|
116 | 116 | int i;
|
117 | 117 |
|
118 |
| - if (cube == NULL) |
119 |
| - return (NULL); |
120 |
| - |
121 |
| - p = result = (char *) palloc(100); |
| 118 | + initStringInfo(&buf); |
122 | 119 |
|
123 | 120 | /*
|
124 | 121 | * while printing the first (LL) corner, check if it is equal to the
|
125 |
| - * scond one |
| 122 | + * second one |
126 | 123 | */
|
127 |
| - p += sprintf(p, "("); |
| 124 | + appendStringInfoChar(&buf, '('); |
128 | 125 | for (i = 0; i < dim; i++)
|
129 | 126 | {
|
130 |
| - p += sprintf(p, "%g", cube->x[i]); |
131 |
| - p += sprintf(p, ", "); |
| 127 | + if (i > 0) |
| 128 | + appendStringInfo(&buf, ", "); |
| 129 | + appendStringInfo(&buf, "%g", cube->x[i]); |
132 | 130 | if (cube->x[i] != cube->x[i + dim])
|
133 |
| - equal = 0; |
| 131 | + equal = false; |
134 | 132 | }
|
135 |
| - p -= 2; /* get rid of the last ", " */ |
136 |
| - p += sprintf(p, ")"); |
| 133 | + appendStringInfoChar(&buf, ')'); |
137 | 134 |
|
138 | 135 | if (!equal)
|
139 | 136 | {
|
140 |
| - p += sprintf(p, ",("); |
141 |
| - for (i = dim; i < dim * 2; i++) |
| 137 | + appendStringInfo(&buf, ",("); |
| 138 | + for (i = 0; i < dim; i++) |
142 | 139 | {
|
143 |
| - p += sprintf(p, "%g", cube->x[i]); |
144 |
| - p += sprintf(p, ", "); |
| 140 | + if (i > 0) |
| 141 | + appendStringInfo(&buf, ", "); |
| 142 | + appendStringInfo(&buf, "%g", cube->x[i + dim]); |
145 | 143 | }
|
146 |
| - p -= 2; |
147 |
| - p += sprintf(p, ")"); |
| 144 | + appendStringInfoChar(&buf, ')'); |
148 | 145 | }
|
149 | 146 |
|
150 |
| - return (result); |
| 147 | + return buf.data; |
151 | 148 | }
|
152 | 149 |
|
153 | 150 |
|
|
0 commit comments