Skip to content

Commit 35e9bd3

Browse files
author
Cristy
committed
adjust space left after a possible reallocation
1 parent e61cf13 commit 35e9bd3

File tree

1 file changed

+33
-29
lines changed

1 file changed

+33
-29
lines changed

magick/log.c

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,9 +1061,8 @@ static char *TranslateEvent(const LogEventType magick_unused(type),
10611061
*q='\0';
10621062
if ((size_t) (q-text+MaxTextExtent) >= extent)
10631063
{
1064-
extent+=MaxTextExtent;
1065-
text=(char *) ResizeQuantumMemory(text,extent+MaxTextExtent,
1066-
sizeof(*text));
1064+
extent<<=1;
1065+
text=(char *) ResizeQuantumMemory(text,extent,sizeof(*text));
10671066
if (text == (char *) NULL)
10681067
return((char *) NULL);
10691068
q=text+strlen(text);
@@ -1113,45 +1112,46 @@ static char *TranslateEvent(const LogEventType magick_unused(type),
11131112
{
11141113
case 'c':
11151114
{
1116-
q+=(ptrdiff_t) CopyMagickString(q,GetClientName(),extent);
1115+
q+=(ptrdiff_t) CopyMagickString(q,GetClientName(),extent-(q-text));
11171116
break;
11181117
}
11191118
case 'd':
11201119
{
1121-
q+=(ptrdiff_t) CopyMagickString(q,domain,extent);
1120+
q+=(ptrdiff_t) CopyMagickString(q,domain,extent-(q-text));
11221121
break;
11231122
}
11241123
case 'e':
11251124
{
1126-
q+=(ptrdiff_t) CopyMagickString(q,event,extent);
1125+
q+=(ptrdiff_t) CopyMagickString(q,event,extent-(q-text));
11271126
break;
11281127
}
11291128
case 'f':
11301129
{
1131-
q+=(ptrdiff_t) CopyMagickString(q,function,extent);
1130+
q+=(ptrdiff_t) CopyMagickString(q,function,extent-(q-text));
11321131
break;
11331132
}
11341133
case 'g':
11351134
{
11361135
if (log_info->generations == 0)
11371136
{
1138-
(void) CopyMagickString(q,"0",extent);
1137+
(void) CopyMagickString(q,"0",extent-(q-text));
11391138
q++;
11401139
break;
11411140
}
1142-
q+=(ptrdiff_t) FormatLocaleString(q,extent,"%.20g",(double) (log_info->generation %
1143-
log_info->generations));
1141+
q+=(ptrdiff_t) FormatLocaleString(q,extent-(q-text),"%.20g",(double)
1142+
(log_info->generation % log_info->generations));
11441143
break;
11451144
}
11461145
case 'i':
11471146
{
1148-
q+=(ptrdiff_t) FormatLocaleString(q,extent,"%.20g",(double)
1147+
q+=(ptrdiff_t) FormatLocaleString(q,extent-(q-text),"%.20g",(double)
11491148
GetMagickThreadSignature());
11501149
break;
11511150
}
11521151
case 'l':
11531152
{
1154-
q+=(ptrdiff_t) FormatLocaleString(q,extent,"%.20g",(double) line);
1153+
q+=(ptrdiff_t) FormatLocaleString(q,extent-(q-text),"%.20g",(double)
1154+
line);
11551155
break;
11561156
}
11571157
case 'm':
@@ -1165,39 +1165,41 @@ static char *TranslateEvent(const LogEventType magick_unused(type),
11651165
p++;
11661166
break;
11671167
}
1168-
q+=(ptrdiff_t) CopyMagickString(q,p,extent);
1168+
q+=(ptrdiff_t) CopyMagickString(q,p,extent-(q-text));
11691169
break;
11701170
}
11711171
case 'n':
11721172
{
1173-
q+=(ptrdiff_t) CopyMagickString(q,GetLogName(),extent);
1173+
q+=(ptrdiff_t) CopyMagickString(q,GetLogName(),extent-(q-text));
11741174
break;
11751175
}
11761176
case 'p':
11771177
{
1178-
q+=(ptrdiff_t) FormatLocaleString(q,extent,"%.20g",(double) getpid());
1178+
q+=(ptrdiff_t) FormatLocaleString(q,extent-(q-text),"%.20g",(double)
1179+
getpid());
11791180
break;
11801181
}
11811182
case 'r':
11821183
{
1183-
q+=(ptrdiff_t) FormatLocaleString(q,extent,"%lu:%02lu.%03lu",(unsigned long)
1184-
(elapsed_time/60.0),(unsigned long) floor(fmod(elapsed_time,60.0)),
1185-
(unsigned long) (1000.0*(elapsed_time-floor(elapsed_time))+0.5));
1184+
q+=(ptrdiff_t) FormatLocaleString(q,extent-(q-text),"%lu:%02lu.%03lu",
1185+
(unsigned long) (elapsed_time/60.0),(unsigned long) floor(fmod(
1186+
elapsed_time,60.0)),(unsigned long) (1000.0*(elapsed_time-floor(
1187+
elapsed_time))+0.5));
11861188
break;
11871189
}
11881190
case 't':
11891191
{
1190-
q+=(ptrdiff_t) FormatMagickTime(seconds,extent,q);
1192+
q+=(ptrdiff_t) FormatMagickTime(seconds,extent-(q-text),q);
11911193
break;
11921194
}
11931195
case 'u':
11941196
{
1195-
q+=(ptrdiff_t) FormatLocaleString(q,extent,"%0.3fu",user_time);
1197+
q+=(ptrdiff_t) FormatLocaleString(q,extent-(q-text),"%0.3fu",user_time);
11961198
break;
11971199
}
11981200
case 'v':
11991201
{
1200-
q+=(ptrdiff_t) CopyMagickString(q,MagickLibVersionText,extent);
1202+
q+=(ptrdiff_t) CopyMagickString(q,MagickLibVersionText,extent-(q-text));
12011203
break;
12021204
}
12031205
case '%':
@@ -1244,8 +1246,8 @@ static char *TranslateFilename(const LogInfo *log_info)
12441246
*q='\0';
12451247
if ((size_t) (q-filename+MaxTextExtent) >= extent)
12461248
{
1247-
extent+=MaxTextExtent;
1248-
filename=(char *) ResizeQuantumMemory(filename,extent+MaxTextExtent,
1249+
extent<<=1;
1250+
filename=(char *) ResizeQuantumMemory(filename,extent,
12491251
sizeof(*filename));
12501252
if (filename == (char *) NULL)
12511253
return((char *) NULL);
@@ -1278,7 +1280,7 @@ static char *TranslateFilename(const LogInfo *log_info)
12781280
}
12791281
case 'c':
12801282
{
1281-
q+=(ptrdiff_t) CopyMagickString(q,GetClientName(),extent);
1283+
q+=(ptrdiff_t) CopyMagickString(q,GetClientName(),extent-(q-filename));
12821284
break;
12831285
}
12841286
case 'g':
@@ -1289,23 +1291,25 @@ static char *TranslateFilename(const LogInfo *log_info)
12891291
q++;
12901292
break;
12911293
}
1292-
q+=(ptrdiff_t) FormatLocaleString(q,extent,"%.20g",(double) (log_info->generation %
1293-
log_info->generations));
1294+
q+=(ptrdiff_t) FormatLocaleString(q,extent-(q-filename),"%.20g",
1295+
(double) (log_info->generation % log_info->generations));
12941296
break;
12951297
}
12961298
case 'n':
12971299
{
1298-
q+=(ptrdiff_t) CopyMagickString(q,GetLogName(),extent);
1300+
q+=(ptrdiff_t) CopyMagickString(q,GetLogName(),extent-(q-filename));
12991301
break;
13001302
}
13011303
case 'p':
13021304
{
1303-
q+=(ptrdiff_t) FormatLocaleString(q,extent,"%.20g",(double) getpid());
1305+
q+=(ptrdiff_t) FormatLocaleString(q,extent-(q-filename),"%.20g",
1306+
(double) getpid());
13041307
break;
13051308
}
13061309
case 'v':
13071310
{
1308-
q+=(ptrdiff_t) CopyMagickString(q,MagickLibVersionText,extent);
1311+
q+=(ptrdiff_t) CopyMagickString(q,MagickLibVersionText,extent-
1312+
(q-filename));
13091313
break;
13101314
}
13111315
case '%':

0 commit comments

Comments
 (0)