Geo: output 10 chars of geohash, not 11.

This does not limit the actual precision, because the last digit bits were
garbage, and the shift value became even negative in the last iteration.
This commit is contained in:
antirez 2019-10-08 17:02:52 +02:00
parent c65347ab17
commit 009862ab7e
2 changed files with 5 additions and 5 deletions

View File

@ -734,14 +734,14 @@ void geohashCommand(client *c) {
r[1].max = 90;
geohashEncode(&r[0],&r[1],xy[0],xy[1],26,&hash);
char buf[12];
char buf[11];
int i;
for (i = 0; i < 11; i++) {
for (i = 0; i < 10; i++) {
int idx = (hash.bits >> (52-((i+1)*5))) & 0x1f;
buf[i] = geoalphabet[idx];
}
buf[11] = '\0';
addReplyBulkCBuffer(c,buf,11);
buf[10] = '\0';
addReplyBulkCBuffer(c,buf,10);
}
}
}

View File

@ -129,7 +129,7 @@ start_server {tags {"geo"}} {
r del points
r geoadd points -5.6 42.6 test
lindex [r geohash points test] 0
} {ezs42e44yx0}
} {ezs42e44yx}
test {GEOPOS simple} {
r del points