address review comments

pull/10041/head
Brent Shaffer 3 years ago
parent eeb16204e2
commit 0b90ee8d3f
  1. 30
      php/ext/google/protobuf/def.c
  2. 31
      php/ext/google/protobuf/names.c
  3. 13
      php/ext/google/protobuf/protobuf.c
  4. 2
      src/google/protobuf/compiler/php/php_generator.cc

@ -499,29 +499,23 @@ static void Descriptor_destructor(zend_object* obj) {
}
static zend_class_entry *Descriptor_GetGeneratedClass(const upb_MessageDef *m) {
char *classname =
GetPhpClassname(upb_MessageDef_File(m), upb_MessageDef_FullName(m), false);
zend_string *str = zend_string_init(classname, strlen(classname), 0);
zend_class_entry *ce = zend_lookup_class(str); // May autoload the class.
zend_string_release (str);
if (!ce) {
char *classname2 =
GetPhpClassname(upb_MessageDef_File(m), upb_MessageDef_FullName(m), true);
zend_string *str2 = zend_string_init(classname2, strlen(classname2), 0);
ce = zend_lookup_class(str2); // May autoload the class.
for (int i = 0; i < 2; ++i) {
char *classname =
GetPhpClassname(upb_MessageDef_File(m), upb_MessageDef_FullName(m), (bool)i);
zend_string *str = zend_string_init(classname, strlen(classname), 0);
zend_class_entry *ce = zend_lookup_class(str); // May autoload the class.
zend_string_release (str2);
free(classname2);
zend_string_release (str);
free(classname);
if (!ce) {
zend_error(E_ERROR, "Couldn't load generated class %s", classname);
if (ce) {
return ce;
}
}
free(classname);
return ce;
char *classname =
GetPhpClassname(upb_MessageDef_File(m), upb_MessageDef_FullName(m), false);
zend_error(E_ERROR, "Couldn't load generated class %s", classname);
}
void Descriptor_FromMessageDef(zval *val, const upb_MessageDef *m) {

@ -103,8 +103,7 @@ bool is_reserved_name(const char* name) {
}
bool is_previously_unreserved_name(const char* name) {
int i;
for (i = 0; kPreviouslyUnreservedNames[i]; i++) {
for (int i = 0; kPreviouslyUnreservedNames[i]; i++) {
if (strcmp(kPreviouslyUnreservedNames[i], name) == 0) {
return true;
}
@ -128,16 +127,18 @@ static char nolocale_toupper(char ch) {
}
}
static char *strdup_nolocale_lower(char *str, int length) {
char* lower = malloc(length + 1);
lower[length] = '\0';
for(int i = 0; i < length; ++i) {
lower[i] = nolocale_tolower(str[i]);
}
return lower;
}
static bool is_reserved(const char *segment, int length, bool previous) {
bool result;
char* lower = calloc(1, length + 1);
memcpy(lower, segment, length);
int i = 0;
while(lower[i]) {
lower[i] = nolocale_tolower(lower[i]);
i++;
}
lower[length] = 0;
char* lower = strdup_nolocale_lower(segment, length);
result = is_reserved_name(lower);
if (result && previous && is_previously_unreserved_name(lower)) {
result = false;
@ -274,14 +275,8 @@ bool IsPreviouslyUnreservedClassName(const char* fullname) {
}
classname += 2;
int length = strlen(classname);
char* lower = calloc(1, length + 1);
memcpy(lower, classname, length);
int i = 0;
while(lower[i]) {
lower[i] = nolocale_tolower(lower[i]);
i++;
}
lower[length] = 0;
char* lower =strdup_nolocale_lower(classname, length);
int j;
for (j = 0; kPreviouslyUnreservedNames[j]; j++) {
if (strcmp(kPreviouslyUnreservedNames[j], lower) == 0) {

@ -242,14 +242,13 @@ bool ObjCache_Get(const void *upb_obj, zval *val) {
// -----------------------------------------------------------------------------
void NameMap_AddMessage(const upb_MessageDef *m) {
char *k = GetPhpClassname(upb_MessageDef_File(m), upb_MessageDef_FullName(m), false);
zend_hash_str_add_ptr(&PROTOBUF_G(name_msg_cache), k, strlen(k), (void*)m);
if (IsPreviouslyUnreservedClassName(k)) {
char *k2 = GetPhpClassname(upb_MessageDef_File(m), upb_MessageDef_FullName(m), true);
zend_hash_str_add_ptr(&PROTOBUF_G(name_msg_cache), k2, strlen(k2), (void*)m);
free(k2);
for (int i = 0; i < 2; ++i) {
char *k = GetPhpClassname(upb_MessageDef_File(m), upb_MessageDef_FullName(m), (bool)i);
zend_hash_str_add_ptr(&PROTOBUF_G(name_msg_cache), k, strlen(k), (void*)m);
if (!IsPreviouslyUnreservedClassName(k)) {
return;
}
}
free(k);
}
void NameMap_AddEnum(const upb_EnumDef *e) {

@ -422,7 +422,7 @@ std::string LegacyGeneratedClassFileName(const DescriptorType* desc,
template <typename DescriptorType>
std::string LegacyReadOnlyGeneratedClassFileName(const DescriptorType* desc,
const Options& options) {
const Options& options) {
std::string php_namespace = RootPhpNamespace(desc, options);
if (!php_namespace.empty()) {
return php_namespace + "/" + desc->name() + ".php";

Loading…
Cancel
Save