189 *bad_class_name = false;
190 }
191
192 const char* const last_slash = strrchr(class_name, '/');
193 if (last_slash == NULL) {
194 // No package name
195 return NULL;
196 }
197
198 char* class_name_ptr = (char*) class_name;
199 // Skip over '['s
200 if (*class_name_ptr == '[') {
201 do {
202 class_name_ptr++;
203 } while (*class_name_ptr == '[');
204
205 // Fully qualified class names should not contain a 'L'.
206 // Set bad_class_name to true to indicate that the package name
207 // could not be obtained due to an error condition.
208 // In this situation, is_same_class_package returns false.
209 if (*class_name_ptr == 'L') {
210 if (bad_class_name != NULL) {
211 *bad_class_name = true;
212 }
213 return NULL;
214 }
215 }
216
217 int length = last_slash - class_name_ptr;
218
219 // A class name could have just the slash character in the name.
220 if (length <= 0) {
221 // No package name
222 if (bad_class_name != NULL) {
223 *bad_class_name = true;
224 }
225 return NULL;
226 }
227
228 // drop name after last slash (including slash)
229 // Ex., "java/lang/String.class" => "java/lang"
|
189 *bad_class_name = false;
190 }
191
192 const char* const last_slash = strrchr(class_name, '/');
193 if (last_slash == NULL) {
194 // No package name
195 return NULL;
196 }
197
198 char* class_name_ptr = (char*) class_name;
199 // Skip over '['s
200 if (*class_name_ptr == '[') {
201 do {
202 class_name_ptr++;
203 } while (*class_name_ptr == '[');
204
205 // Fully qualified class names should not contain a 'L'.
206 // Set bad_class_name to true to indicate that the package name
207 // could not be obtained due to an error condition.
208 // In this situation, is_same_class_package returns false.
209 if (*class_name_ptr == 'L' || *class_name_ptr == 'Q') {
210 if (bad_class_name != NULL) {
211 *bad_class_name = true;
212 }
213 return NULL;
214 }
215 }
216
217 int length = last_slash - class_name_ptr;
218
219 // A class name could have just the slash character in the name.
220 if (length <= 0) {
221 // No package name
222 if (bad_class_name != NULL) {
223 *bad_class_name = true;
224 }
225 return NULL;
226 }
227
228 // drop name after last slash (including slash)
229 // Ex., "java/lang/String.class" => "java/lang"
|