mercurial/manifest.c
changeset 24286 40528ad1b1e8
parent 24228 542c891274b2
child 24293 30e9ee203846
equal deleted inserted replaced
24285:8e13cc0825f1 24286:40528ad1b1e8
   464 		PyErr_NoMemory();
   464 		PyErr_NoMemory();
   465 		return -1;
   465 		return -1;
   466 	}
   466 	}
   467 	memcpy(dest, path, plen + 1);
   467 	memcpy(dest, path, plen + 1);
   468 	for (i = 0; i < 20; i++) {
   468 	for (i = 0; i < 20; i++) {
   469 		sprintf(dest + plen + 1 + (i * 2), "%02hhx", hash[i]);
   469 		/* Cast to unsigned, so it will not get sign-extended when promoted
       
   470 		 * to int (as is done when passing to a variadic function)
       
   471 		 */
       
   472 		sprintf(dest + plen + 1 + (i * 2), "%02x", (unsigned char)hash[i]);
   470 	}
   473 	}
   471 	memcpy(dest + plen + 41, flags, flen);
   474 	memcpy(dest + plen + 41, flags, flen);
   472 	dest[plen + 41 + flen] = '\n';
   475 	dest[plen + 41 + flen] = '\n';
   473 	new.start = dest;
   476 	new.start = dest;
   474 	new.len = dlen;
   477 	new.len = dlen;