diff --git a/src/kits/package/FetchFileJob.cpp b/src/kits/package/FetchFileJob.cpp index d5e3bc4042..07853d7cf0 100644 --- a/src/kits/package/FetchFileJob.cpp +++ b/src/kits/package/FetchFileJob.cpp @@ -129,51 +129,53 @@ FetchFileJob::RequestCompleted(BUrlRequest* request, bool success) fError = request->Status(); if (success) { - const BHttpResult& outResult = dynamic_cast - (request->Result()); - uint16 code = outResult.StatusCode(); - uint16 codeClass = BHttpRequest::StatusCodeClass(code); + const BHttpResult* httpResult = dynamic_cast + (&request->Result()); + if (httpResult != NULL) { + uint16 code = httpResult->StatusCode(); + uint16 codeClass = BHttpRequest::StatusCodeClass(code); - switch (codeClass) { - case B_HTTP_STATUS_CLASS_CLIENT_ERROR: - case B_HTTP_STATUS_CLASS_SERVER_ERROR: - fError = B_IO_ERROR; - break; - default: - fError = B_OK; - break; - } - switch (code) { - case B_HTTP_STATUS_OK: - fError = B_OK; - break; - case B_HTTP_STATUS_PARTIAL_CONTENT: - fError = B_PARTIAL_READ; - break; - case B_HTTP_STATUS_REQUEST_TIMEOUT: - case B_HTTP_STATUS_GATEWAY_TIMEOUT: - fError = B_DEV_TIMEOUT; - break; - case B_HTTP_STATUS_NOT_IMPLEMENTED: - case B_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: - fError = B_NOT_SUPPORTED; - break; - case B_HTTP_STATUS_UNAUTHORIZED: - fError = B_PERMISSION_DENIED; - break; - case B_HTTP_STATUS_FORBIDDEN: - case B_HTTP_STATUS_METHOD_NOT_ALLOWED: - case B_HTTP_STATUS_NOT_ACCEPTABLE: - fError = B_NOT_ALLOWED; - break; - case B_HTTP_STATUS_NOT_FOUND: - fError = B_NAME_NOT_FOUND; - break; - case B_HTTP_STATUS_BAD_GATEWAY: - fError = B_BAD_DATA; - break; - default: - break; + switch (codeClass) { + case B_HTTP_STATUS_CLASS_CLIENT_ERROR: + case B_HTTP_STATUS_CLASS_SERVER_ERROR: + fError = B_IO_ERROR; + break; + default: + fError = B_OK; + break; + } + switch (code) { + case B_HTTP_STATUS_OK: + fError = B_OK; + break; + case B_HTTP_STATUS_PARTIAL_CONTENT: + fError = B_PARTIAL_READ; + break; + case B_HTTP_STATUS_REQUEST_TIMEOUT: + case B_HTTP_STATUS_GATEWAY_TIMEOUT: + fError = B_DEV_TIMEOUT; + break; + case B_HTTP_STATUS_NOT_IMPLEMENTED: + case B_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: + fError = B_NOT_SUPPORTED; + break; + case B_HTTP_STATUS_UNAUTHORIZED: + fError = B_PERMISSION_DENIED; + break; + case B_HTTP_STATUS_FORBIDDEN: + case B_HTTP_STATUS_METHOD_NOT_ALLOWED: + case B_HTTP_STATUS_NOT_ACCEPTABLE: + fError = B_NOT_ALLOWED; + break; + case B_HTTP_STATUS_NOT_FOUND: + fError = B_NAME_NOT_FOUND; + break; + case B_HTTP_STATUS_BAD_GATEWAY: + fError = B_BAD_DATA; + break; + default: + break; + } } } }