Fixed NPE inside org.webrtc.Camera1Session.create
On some devices `android.hardware.Camera.open` returns null
instead of raising exception. It causes `NPE` inside
`Camera1Session.create` when method `setPreviewTexture` is
invoked on local variable `camera`, which is `null`.
Bug: webrtc:8658
Change-Id: Ic65b4aef2c0b8b65735a9db02433b536bfe92ddd
Reviewed-on: https://webrtc-review.googlesource.com/33620
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21352}
diff --git a/AUTHORS b/AUTHORS
index 121838f..abf8b5b 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -55,6 +55,7 @@
Victor Costan <costan@gmail.com>
Xiaohong Xu <freemine@yeah.net>
Xiaolei Yu <dreifachstein@gmail.com>
+Yura Yaroshevich <yura.yaroshevich@gmail.com>
Hans Knoechel <hans@hans-knoechel.de>
Korniltsev Anatoly <korniltsev.anatoly@gmail.com>
diff --git a/sdk/android/src/java/org/webrtc/Camera1Session.java b/sdk/android/src/java/org/webrtc/Camera1Session.java
index 61a51c9..c27b4fc 100644
--- a/sdk/android/src/java/org/webrtc/Camera1Session.java
+++ b/sdk/android/src/java/org/webrtc/Camera1Session.java
@@ -69,6 +69,12 @@
return;
}
+ if (camera == null) {
+ callback.onFailure(FailureType.ERROR,
+ "android.hardware.Camera.open returned null for camera id = " + cameraId);
+ return;
+ }
+
try {
camera.setPreviewTexture(surfaceTextureHelper.getSurfaceTexture());
} catch (IOException e) {