Alexey Varlamov wrote:
[snip]
>>
>> 2) I was going to suggest that having the user call free() is an awful
>> idea,, but I believe that you've actually added a recent change -
>> destroy_properties_string() or something to fix this - I assume that
>> this is something we can clean up.
>>
>> That said, I also see :
>>
>> +void Properties::destroy_value_string(const char* value) {
>> +    STD_FREE((void*)value);
>>
>> +void Properties::destroy_properties_keys(const char** keys) {
>> +    int i = 0;
>> +    while (keys[i] != NULL) {
>> +        if (keys[i]) {
>> +            STD_FREE((void*)keys[i]);
>> +        }
>> +        i++;
>> +    }
>> +    STD_FREE(keys);
>>
>> Which I think is slightly confusing.  I think that you need
>>
>>   destroy_string(char *)
>>   destroy_string(char **)
>>
>> and not distinguish between keys and values, unless they become classes
>> in their own right.
>
> Maybe worth it, but only for vmcore internal  API. The exported
> interfaces are pure-C thus no overloading is allowed.
> And I'm inclined to replace "destroy" with more conventional "free".

Ok - but there should be no need to have API calls for "keys" and
"values", IMO.
I'm confused now. Do you mean API naming only? Or suggest to have a
single destroy() for all?
For the latter, it should be possible to alloc single memory block for
storing keys array + key strings.

I guess I simply mean that as a user of this APi, I don't want to remember if it's a key or a value...


>
>>
>>
>> 3) looking at it, maybe the whole table number thing
>> ('INTERNAL_PROPERTIES') isn't a good idea when used in code.  Wouldn't
>> it be more elegant to have multiple properties in the environment such
>> that
>>
>>     m_env->internalProperties->get(XBOOTCLASSPATH);
>>
>> or
>>     m_env->javaProperties->get("java.home");
>>
>>
>> kind of thing for readability? it could map to the calls you have now...
>>
> Agreed, thought of this, just staggerred by the amount of work to
> rewrite the patch :(
> And again, this would differentiate internal and exported APIs further
> - it was nice to have them looking similar.

eh - they don't - there's that table number value...
Huh? Didn't you suggest to get rid of the table number in interanl API?

Ok - not sure - I need to figure out then what is internal and what isn't...


Anyway, not critical now.
Yes. Ok, I'll play with this and see which is nicer.

[snip]

Reply via email to