On 20. 1. 26 11:22, Bert Huijben via dev wrote:
The issue I was thinking about how serf_buckets_are_v2() is/was used.But checking the current code in serf_get_type() we probably already worked around this problem for some time... Bert --- From trunk: const serf_bucket_type_t *serf_get_type(serf_bucket_t *bucket, int min_version) { const serf_bucket_t *r; switch (min_version) { case 1: r = bucket; /* Always supported */ break; #if 0 case 3: r = bucket->type->read_bucket(bucket, &v3_check); break; #endif case 2: #if 0 /* We can't trust this check to always do the right thing as there can be multiple pointers to the same function... but an optimizing compiler/linker can still use the hint if it is inlining this function. ### Enable? */ if (bucket->type->read_bucket == serf_buckets_are_v2) return bucket->type; #endif r = bucket->type->read_bucket(bucket, &v2_check); break; default: abort(); } if (r != NULL) return r->type; return &fallback_bucket_type; }
Just out of interest, why do we support multiple bucket type versions? I can understand reasons of API compatibility.
But let's be realistic: the only user of Serf that we know of is Subversion. We may as well drop these compatibility concerns, make 1.5 the last 1.x release and go straight to 2.0 in the next release. It's not as if half the internet will come crashing down if we do that.
-- Brane
