@@ -336,15 +336,15 @@ struct sha1file *create_tmp_packfile(char **pack_tmp_name)
336336 return sha1fd (fd , * pack_tmp_name );
337337}
338338
339- void finish_tmp_packfile (char * name_buffer ,
339+ void finish_tmp_packfile (struct strbuf * name_buffer ,
340340 const char * pack_tmp_name ,
341341 struct pack_idx_entry * * written_list ,
342342 uint32_t nr_written ,
343343 struct pack_idx_option * pack_idx_opts ,
344344 unsigned char sha1 [])
345345{
346346 const char * idx_tmp_name ;
347- char * end_of_name_prefix = strrchr ( name_buffer , 0 ) ;
347+ int basename_len = name_buffer -> len ;
348348
349349 if (adjust_shared_perm (pack_tmp_name ))
350350 die_errno ("unable to make temporary pack file readable" );
@@ -354,17 +354,19 @@ void finish_tmp_packfile(char *name_buffer,
354354 if (adjust_shared_perm (idx_tmp_name ))
355355 die_errno ("unable to make temporary index file readable" );
356356
357- sprintf ( end_of_name_prefix , "%s.pack" , sha1_to_hex (sha1 ));
358- free_pack_by_name (name_buffer );
357+ strbuf_addf ( name_buffer , "%s.pack" , sha1_to_hex (sha1 ));
358+ free_pack_by_name (name_buffer -> buf );
359359
360- if (rename (pack_tmp_name , name_buffer ))
360+ if (rename (pack_tmp_name , name_buffer -> buf ))
361361 die_errno ("unable to rename temporary pack file" );
362362
363- sprintf (end_of_name_prefix , "%s.idx" , sha1_to_hex (sha1 ));
364- if (rename (idx_tmp_name , name_buffer ))
363+ strbuf_setlen (name_buffer , basename_len );
364+
365+ strbuf_addf (name_buffer , "%s.idx" , sha1_to_hex (sha1 ));
366+ if (rename (idx_tmp_name , name_buffer -> buf ))
365367 die_errno ("unable to rename temporary index file" );
366368
367- * end_of_name_prefix = '\0' ;
369+ strbuf_setlen ( name_buffer , basename_len ) ;
368370
369371 free ((void * )idx_tmp_name );
370372}
0 commit comments