@@ -1061,9 +1061,8 @@ static char *TranslateEvent(const LogEventType magick_unused(type),
1061
1061
* q = '\0' ;
1062
1062
if ((size_t ) (q - text + MaxTextExtent ) >= extent )
1063
1063
{
1064
- extent += MaxTextExtent ;
1065
- text = (char * ) ResizeQuantumMemory (text ,extent + MaxTextExtent ,
1066
- sizeof (* text ));
1064
+ extent <<=1 ;
1065
+ text = (char * ) ResizeQuantumMemory (text ,extent ,sizeof (* text ));
1067
1066
if (text == (char * ) NULL )
1068
1067
return ((char * ) NULL );
1069
1068
q = text + strlen (text );
@@ -1113,45 +1112,46 @@ static char *TranslateEvent(const LogEventType magick_unused(type),
1113
1112
{
1114
1113
case 'c' :
1115
1114
{
1116
- q += (ptrdiff_t ) CopyMagickString (q ,GetClientName (),extent );
1115
+ q += (ptrdiff_t ) CopyMagickString (q ,GetClientName (),extent - ( q - text ) );
1117
1116
break ;
1118
1117
}
1119
1118
case 'd' :
1120
1119
{
1121
- q += (ptrdiff_t ) CopyMagickString (q ,domain ,extent );
1120
+ q += (ptrdiff_t ) CopyMagickString (q ,domain ,extent - ( q - text ) );
1122
1121
break ;
1123
1122
}
1124
1123
case 'e' :
1125
1124
{
1126
- q += (ptrdiff_t ) CopyMagickString (q ,event ,extent );
1125
+ q += (ptrdiff_t ) CopyMagickString (q ,event ,extent - ( q - text ) );
1127
1126
break ;
1128
1127
}
1129
1128
case 'f' :
1130
1129
{
1131
- q += (ptrdiff_t ) CopyMagickString (q ,function ,extent );
1130
+ q += (ptrdiff_t ) CopyMagickString (q ,function ,extent - ( q - text ) );
1132
1131
break ;
1133
1132
}
1134
1133
case 'g' :
1135
1134
{
1136
1135
if (log_info -> generations == 0 )
1137
1136
{
1138
- (void ) CopyMagickString (q ,"0" ,extent );
1137
+ (void ) CopyMagickString (q ,"0" ,extent - ( q - text ) );
1139
1138
q ++ ;
1140
1139
break ;
1141
1140
}
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 ));
1144
1143
break ;
1145
1144
}
1146
1145
case 'i' :
1147
1146
{
1148
- q += (ptrdiff_t ) FormatLocaleString (q ,extent ,"%.20g" ,(double )
1147
+ q += (ptrdiff_t ) FormatLocaleString (q ,extent - ( q - text ) ,"%.20g" ,(double )
1149
1148
GetMagickThreadSignature ());
1150
1149
break ;
1151
1150
}
1152
1151
case 'l' :
1153
1152
{
1154
- q += (ptrdiff_t ) FormatLocaleString (q ,extent ,"%.20g" ,(double ) line );
1153
+ q += (ptrdiff_t ) FormatLocaleString (q ,extent - (q - text ),"%.20g" ,(double )
1154
+ line );
1155
1155
break ;
1156
1156
}
1157
1157
case 'm' :
@@ -1165,39 +1165,41 @@ static char *TranslateEvent(const LogEventType magick_unused(type),
1165
1165
p ++ ;
1166
1166
break ;
1167
1167
}
1168
- q += (ptrdiff_t ) CopyMagickString (q ,p ,extent );
1168
+ q += (ptrdiff_t ) CopyMagickString (q ,p ,extent - ( q - text ) );
1169
1169
break ;
1170
1170
}
1171
1171
case 'n' :
1172
1172
{
1173
- q += (ptrdiff_t ) CopyMagickString (q ,GetLogName (),extent );
1173
+ q += (ptrdiff_t ) CopyMagickString (q ,GetLogName (),extent - ( q - text ) );
1174
1174
break ;
1175
1175
}
1176
1176
case 'p' :
1177
1177
{
1178
- q += (ptrdiff_t ) FormatLocaleString (q ,extent ,"%.20g" ,(double ) getpid ());
1178
+ q += (ptrdiff_t ) FormatLocaleString (q ,extent - (q - text ),"%.20g" ,(double )
1179
+ getpid ());
1179
1180
break ;
1180
1181
}
1181
1182
case 'r' :
1182
1183
{
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 ));
1186
1188
break ;
1187
1189
}
1188
1190
case 't' :
1189
1191
{
1190
- q += (ptrdiff_t ) FormatMagickTime (seconds ,extent ,q );
1192
+ q += (ptrdiff_t ) FormatMagickTime (seconds ,extent - ( q - text ) ,q );
1191
1193
break ;
1192
1194
}
1193
1195
case 'u' :
1194
1196
{
1195
- q += (ptrdiff_t ) FormatLocaleString (q ,extent ,"%0.3fu" ,user_time );
1197
+ q += (ptrdiff_t ) FormatLocaleString (q ,extent - ( q - text ) ,"%0.3fu" ,user_time );
1196
1198
break ;
1197
1199
}
1198
1200
case 'v' :
1199
1201
{
1200
- q += (ptrdiff_t ) CopyMagickString (q ,MagickLibVersionText ,extent );
1202
+ q += (ptrdiff_t ) CopyMagickString (q ,MagickLibVersionText ,extent - ( q - text ) );
1201
1203
break ;
1202
1204
}
1203
1205
case '%' :
@@ -1244,8 +1246,8 @@ static char *TranslateFilename(const LogInfo *log_info)
1244
1246
* q = '\0' ;
1245
1247
if ((size_t ) (q - filename + MaxTextExtent ) >= extent )
1246
1248
{
1247
- extent += MaxTextExtent ;
1248
- filename = (char * ) ResizeQuantumMemory (filename ,extent + MaxTextExtent ,
1249
+ extent <<= 1 ;
1250
+ filename = (char * ) ResizeQuantumMemory (filename ,extent ,
1249
1251
sizeof (* filename ));
1250
1252
if (filename == (char * ) NULL )
1251
1253
return ((char * ) NULL );
@@ -1278,7 +1280,7 @@ static char *TranslateFilename(const LogInfo *log_info)
1278
1280
}
1279
1281
case 'c' :
1280
1282
{
1281
- q += (ptrdiff_t ) CopyMagickString (q ,GetClientName (),extent );
1283
+ q += (ptrdiff_t ) CopyMagickString (q ,GetClientName (),extent - ( q - filename ) );
1282
1284
break ;
1283
1285
}
1284
1286
case 'g' :
@@ -1289,23 +1291,25 @@ static char *TranslateFilename(const LogInfo *log_info)
1289
1291
q ++ ;
1290
1292
break ;
1291
1293
}
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 ));
1294
1296
break ;
1295
1297
}
1296
1298
case 'n' :
1297
1299
{
1298
- q += (ptrdiff_t ) CopyMagickString (q ,GetLogName (),extent );
1300
+ q += (ptrdiff_t ) CopyMagickString (q ,GetLogName (),extent - ( q - filename ) );
1299
1301
break ;
1300
1302
}
1301
1303
case 'p' :
1302
1304
{
1303
- q += (ptrdiff_t ) FormatLocaleString (q ,extent ,"%.20g" ,(double ) getpid ());
1305
+ q += (ptrdiff_t ) FormatLocaleString (q ,extent - (q - filename ),"%.20g" ,
1306
+ (double ) getpid ());
1304
1307
break ;
1305
1308
}
1306
1309
case 'v' :
1307
1310
{
1308
- q += (ptrdiff_t ) CopyMagickString (q ,MagickLibVersionText ,extent );
1311
+ q += (ptrdiff_t ) CopyMagickString (q ,MagickLibVersionText ,extent -
1312
+ (q - filename ));
1309
1313
break ;
1310
1314
}
1311
1315
case '%' :
0 commit comments