Le 23/03/2011 18:13, Ludovic Rousseau a écrit : > 2011/3/23 Viktor TARASOV<viktor.tara...@opentrust.com>: >> Le 23/03/2011 16:29, Ludovic Rousseau a écrit : >>> Hello, >>> >>> I get this: >>> pkcs15-iasecc.c: In function ‘iasecc_file_convert_acls’: >>> pkcs15-iasecc.c:312: warning: initialization discards qualifiers from >>> pointer target type >>> >>> The problem is the line: >>> struct sc_acl_entry *acl = sc_file_get_acl_entry(file, ii); >>> >>> If I change it to: >>> const struct sc_acl_entry *acl = >>> sc_file_get_acl_entry(file, ii); >>> I then get errors: >>> pkcs15-iasecc.c: In function ‘iasecc_file_convert_acls’: >>> pkcs15-iasecc.c:320: error: assignment of read-only location >>> pkcs15-iasecc.c:321: error: assignment of read-only location >>> pkcs15-iasecc.c:324: error: assignment of read-only location >>> pkcs15-iasecc.c:325: error: assignment of read-only location >>> >>> This is because the iasecc_file_convert_acls() function _does_ change >>> the (const) structure returned by sc_file_get_acl_entry(). >>> >>> Complete function: >> ... >>> I don't know what is the proper way to fix this. >> Remove 'cost' qualifier from the function prototype, like in attachment ? > No. You can't do that. > The function may also return a pointer to a static variable allocated > by the function sc_file_get_acl_entry(). The caller shall not modify > the static variable allocated by the called function. Agree, silly proposal.
> Maybe the idea if hardcode special values for never, none and unknown > into a pointer is a bad idea. Is it just to save a few bytes of RAM? Agree, as well as constructions like "(sc_acl_entry_t *) 2". It was always disturbing. -- Viktor Tarasov <viktor.tara...@opentrust.com> _______________________________________________ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel