Fossil SCM

Correct some of the calculations and reduce code by reusing existing decoder.

andybradford 2025-10-02 01:48 md5-color-hash
Commit 08df9ea0de93afcb7046b09a1d633a41748e335d8d28d4112e3d1ba05381d9cd
1 file changed +5 -9
+5 -9
--- src/color.c
+++ src/color.c
@@ -297,25 +297,21 @@
297297
/*
298298
** Compute a hash on a branch or user name
299299
*/
300300
static unsigned int hash_of_name(const char *z){
301301
unsigned int h = 0;
302
- unsigned char c;
302
+ unsigned char digest[16];
303303
int l = 0;
304304
int i;
305305
const char *zHash;
306306
md5sum_init();
307307
md5sum_step_text(z, -1);
308308
zHash = md5sum_finish(0);
309
- for( i=0; zHash[i]; i++ ){
310
- c = (i%2)==0 ? zHash[i] << 4 : zHash[i];
311
- if( ((i/8)%2)==0 ) {
312
- h += c << (24 - (l * 8));
313
- }else{
314
- h ^= c << (24 - (l * 8));
315
- }
316
- l = (l + 1) % 4;
309
+ decode16(zHash, (unsigned char*)digest, strlen(zHash));
310
+ for( i=0; i<4; i++ ){
311
+ l = i % 4;
312
+ h += digest[i] << (24 - (l * 8));
317313
}
318314
return h;
319315
}
320316
321317
/*
322318
--- src/color.c
+++ src/color.c
@@ -297,25 +297,21 @@
297 /*
298 ** Compute a hash on a branch or user name
299 */
300 static unsigned int hash_of_name(const char *z){
301 unsigned int h = 0;
302 unsigned char c;
303 int l = 0;
304 int i;
305 const char *zHash;
306 md5sum_init();
307 md5sum_step_text(z, -1);
308 zHash = md5sum_finish(0);
309 for( i=0; zHash[i]; i++ ){
310 c = (i%2)==0 ? zHash[i] << 4 : zHash[i];
311 if( ((i/8)%2)==0 ) {
312 h += c << (24 - (l * 8));
313 }else{
314 h ^= c << (24 - (l * 8));
315 }
316 l = (l + 1) % 4;
317 }
318 return h;
319 }
320
321 /*
322
--- src/color.c
+++ src/color.c
@@ -297,25 +297,21 @@
297 /*
298 ** Compute a hash on a branch or user name
299 */
300 static unsigned int hash_of_name(const char *z){
301 unsigned int h = 0;
302 unsigned char digest[16];
303 int l = 0;
304 int i;
305 const char *zHash;
306 md5sum_init();
307 md5sum_step_text(z, -1);
308 zHash = md5sum_finish(0);
309 decode16(zHash, (unsigned char*)digest, strlen(zHash));
310 for( i=0; i<4; i++ ){
311 l = i % 4;
312 h += digest[i] << (24 - (l * 8));
 
 
 
 
313 }
314 return h;
315 }
316
317 /*
318

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button