RETURN_FALSE;
}
- if (file_exts == NULL) { /* autoload_extensions is not intialzed, set to defaults */
+ if (file_exts == NULL) { /* autoload_extensions is not initialzed, set to defaults */
- copy = pos1 = estrndup(SPL_DEFAULT_FILE_EXTENSIONS, sizeof(SPL_DEFAULT_FILE_EXTENSIONS)-1);
+ pos = SPL_DEFAULT_FILE_EXTENSIONS;
+ pos_len = sizeof(SPL_DEFAULT_FILE_EXTENSIONS) - 1;
} else {
- copy = pos1 = estrndup(file_exts, file_exts_len);
- }
- lc_name = zend_str_tolower_dup(class_name, class_name_len);
- while(pos1 && *pos1 && !EG(exception)) {
- EG(return_value_ptr_ptr) = original_return_value;
- EG(opline_ptr) = original_opline_ptr;
- EG(active_op_array) = original_active_op_array;
- pos2 = strchr(pos1, ',');
- if (pos2) *pos2 = '\0';
- if (spl_autoload(class_name, lc_name, class_name_len, pos1 TSRMLS_CC)) {
+ pos = file_exts->val;
+ pos_len = file_exts->len;
+ }
+
+ lc_name = STR_ALLOC(class_name->len, 0);
+ zend_str_tolower_copy(lc_name->val, class_name->val, class_name->len);
+ while (pos && *pos && !EG(exception)) {
+ pos1 = strchr(pos, ',');
+ if (pos1) {
+ pos1_len = pos1 - pos;
+ } else {
+ pos1_len = pos_len;
+ }
+ if (spl_autoload(class_name, lc_name, pos, pos1_len TSRMLS_CC)) {
found = 1;
break; /* loaded */
}