[Android] [PATCH] Check if returned cursors are not null
Geoffrey Métais
geoffrey.metais at gmail.com
Mon Jul 6 14:52:23 CEST 2015
LGTM
On Mon, Jul 6, 2015 at 1:30 PM Thomas Guillem <thomas at gllm.fr> wrote:
> ---
> .../src/org/videolan/vlc/MediaDatabase.java | 283
> ++++++++++++---------
> .../vlc/gui/video/VideoPlayerActivity.java | 13 +-
> vlc-android/src/org/videolan/vlc/util/Util.java | 2 +-
> 3 files changed, 168 insertions(+), 130 deletions(-)
>
> diff --git a/vlc-android/src/org/videolan/vlc/MediaDatabase.java
> b/vlc-android/src/org/videolan/vlc/MediaDatabase.java
> index b5cc3de..082bbe1 100644
> --- a/vlc-android/src/org/videolan/vlc/MediaDatabase.java
> +++ b/vlc-android/src/org/videolan/vlc/MediaDatabase.java
> @@ -362,9 +362,11 @@ public class MediaDatabase {
> new String[] { PLAYLIST_NAME },
> null, null, null, null, null);
>
> - while(c.moveToNext())
> - playlists.add(c.getString(c.getColumnIndex(PLAYLIST_NAME)));
> - c.close();
> + if (c != null) {
> + while (c.moveToNext())
> +
> playlists.add(c.getString(c.getColumnIndex(PLAYLIST_NAME)));
> + c.close();
> + }
> return playlists.toArray(new String[playlists.size()]);
> }
>
> @@ -413,9 +415,12 @@ public class MediaDatabase {
> Cursor c = mDb.query(PLAYLIST_TABLE_NAME,
> new String[] { PLAYLIST_NAME }, PLAYLIST_NAME + "= ?",
> new String[] { name }, null, null, "1");
> - int count = c.getCount();
> - c.close();
> - return (count > 0);
> + if (c != null) {
> + final int count = c.getCount();
> + c.close();
> + return (count > 0);
> + } else
> + return false;
> }
>
> /**
> @@ -436,14 +441,18 @@ public class MediaDatabase {
> new String[] { playlistName }, null, null,
> PLAYLIST_MEDIA_ORDER + " ASC");
>
> - int count = c.getCount();
> - String ret[] = new String[count]; int i = 0;
> - while(c.moveToNext()) {
> - ret[i] =
> c.getString(c.getColumnIndex(PLAYLIST_MEDIA_MEDIALOCATION));
> - i++;
> - }
> - c.close();
> - return ret;
> + if (c != null) {
> + int count = c.getCount();
> + String ret[] = new String[count];
> + int i = 0;
> + while (c.moveToNext()) {
> + ret[i] =
> c.getString(c.getColumnIndex(PLAYLIST_MEDIA_MEDIALOCATION));
> + i++;
> + }
> + c.close();
> + return ret;
> + } else
> + return null;
> }
>
> /**
> @@ -492,15 +501,17 @@ public class MediaDatabase {
> new String[] { playlistName, String.valueOf(position) },
> null, null,
> PLAYLIST_MEDIA_ORDER + " ASC");
> - while(c.moveToNext()) {
> - ContentValues cv = new ContentValues();
> - int ii = c.getInt(c.getColumnIndex(PLAYLIST_MEDIA_ORDER)) +
> factor;
> - Log.d(TAG, "ii = " + ii);
> - cv.put(PLAYLIST_MEDIA_ORDER, ii /* i */);
> - mDb.update(PLAYLIST_MEDIA_TABLE_NAME, cv, PLAYLIST_MEDIA_ID +
> "=?",
> - new String[] {
> c.getString(c.getColumnIndex(PLAYLIST_MEDIA_ID)) });
> + if (c != null) {
> + while (c.moveToNext()) {
> + ContentValues cv = new ContentValues();
> + int ii = c.getInt(c.getColumnIndex(PLAYLIST_MEDIA_ORDER))
> + factor;
> + Log.d(TAG, "ii = " + ii);
> + cv.put(PLAYLIST_MEDIA_ORDER, ii /* i */);
> + mDb.update(PLAYLIST_MEDIA_TABLE_NAME, cv,
> PLAYLIST_MEDIA_ID + "=?",
> + new
> String[]{c.getString(c.getColumnIndex(PLAYLIST_MEDIA_ID))});
> + }
> + c.close();
> }
> - c.close();
> }
>
> /**
> @@ -595,9 +606,12 @@ public class MediaDatabase {
> MEDIA_LOCATION + "=?",
> new String[] { uri.toString() },
> null, null, null);
> - boolean exists = cursor.moveToFirst();
> - cursor.close();
> - return exists;
> + if (cursor != null) {
> + final boolean exists = cursor.moveToFirst();
> + cursor.close();
> + return exists;
> + } else
> + return false;
> } catch (Exception e) {
> Log.e(TAG, "Query failed");
> return false;
> @@ -618,14 +632,16 @@ public class MediaDatabase {
> MEDIA_TABLE_NAME,
> new String[] { MEDIA_LOCATION },
> null, null, null, null, null);
> - cursor.moveToFirst();
> - if (!cursor.isAfterLast()) {
> - do {
> - File file = new File(cursor.getString(0));
> - files.add(file);
> - } while (cursor.moveToNext());
> + if (cursor != null) {
> + cursor.moveToFirst();
> + if (!cursor.isAfterLast()) {
> + do {
> + File file = new File(cursor.getString(0));
> + files.add(file);
> + } while (cursor.moveToNext());
> + }
> + cursor.close();
> }
> - cursor.close();
>
> return files;
> }
> @@ -640,12 +656,14 @@ public class MediaDatabase {
>
> ArrayList<String> mediaList = new ArrayList<String>();
> Cursor cursor = queryMedia(filter);
> - if (cursor.moveToFirst()){
> - do {
> - mediaList.add(cursor.getString(0));
> - } while (cursor.moveToNext());
> + if (cursor != null) {
> + if (cursor.moveToFirst()) {
> + do {
> + mediaList.add(cursor.getString(0));
> + } while (cursor.moveToNext());
> + }
> + cursor.close();
> }
> - cursor.close();
> return mediaList;
> }
>
> @@ -681,36 +699,39 @@ public class MediaDatabase {
> CHUNK_SIZE,
> chunk_count * CHUNK_SIZE), null);
>
> - if (cursor.moveToFirst()) {
> - try {
> - do {
> - final Uri uri =
> AndroidUtil.LocationToUri(cursor.getString(0));
> - MediaWrapper media = new MediaWrapper(uri,
> - cursor.getLong(1), // MEDIA_TIME
> - cursor.getLong(2), // MEDIA_LENGTH
> - cursor.getInt(3), // MEDIA_TYPE
> - null, // MEDIA_PICTURE
> - cursor.getString(4), // MEDIA_TITLE
> - cursor.getString(5), // MEDIA_ARTIST
> - cursor.getString(6), // MEDIA_GENRE
> - cursor.getString(7), // MEDIA_ALBUM
> - cursor.getString(8), //
> MEDIA_ALBUMARTIST
> - cursor.getInt(9), // MEDIA_WIDTH
> - cursor.getInt(10), // MEDIA_HEIGHT
> - cursor.getString(11), //
> MEDIA_ARTWORKURL
> - cursor.getInt(12), //
> MEDIA_AUDIOTRACK
> - cursor.getInt(13), // MEDIA_SPUTRACK
> - cursor.getInt(14), //
> MEDIA_TRACKNUMBER
> - cursor.getInt(15), // MEDIA_DISCNUMBER
> - cursor.getLong(16)); //
> MEDIA_LAST_MODIFIED
> - medias.put(media.getUri().toString(), media);
> + if (cursor != null) {
> + if (cursor.moveToFirst()) {
> + try {
> + do {
> + final Uri uri =
> AndroidUtil.LocationToUri(cursor.getString(0));
> + MediaWrapper media = new MediaWrapper(uri,
> + cursor.getLong(1), // MEDIA_TIME
> + cursor.getLong(2), //
> MEDIA_LENGTH
> + cursor.getInt(3), // MEDIA_TYPE
> + null, //
> MEDIA_PICTURE
> + cursor.getString(4), // MEDIA_TITLE
> + cursor.getString(5), //
> MEDIA_ARTIST
> + cursor.getString(6), // MEDIA_GENRE
> + cursor.getString(7), // MEDIA_ALBUM
> + cursor.getString(8), //
> MEDIA_ALBUMARTIST
> + cursor.getInt(9), // MEDIA_WIDTH
> + cursor.getInt(10), //
> MEDIA_HEIGHT
> + cursor.getString(11), //
> MEDIA_ARTWORKURL
> + cursor.getInt(12), //
> MEDIA_AUDIOTRACK
> + cursor.getInt(13), //
> MEDIA_SPUTRACK
> + cursor.getInt(14), //
> MEDIA_TRACKNUMBER
> + cursor.getInt(15), //
> MEDIA_DISCNUMBER
> + cursor.getLong(16)); //
> MEDIA_LAST_MODIFIED
> + medias.put(media.getUri().toString(), media);
> +
> + count++;
> + } while (cursor.moveToNext());
> + } catch (IllegalStateException e) {
> + } //Google bug causing IllegalStateException, see
> https://code.google.com/p/android/issues/detail?id=32472
> + }
>
> - count++;
> - } while (cursor.moveToNext());
> - } catch (IllegalStateException e) {} //Google bug causing
> IllegalStateException, see
> https://code.google.com/p/android/issues/detail?id=32472
> + cursor.close();
> }
> -
> - cursor.close();
> chunk_count++;
> } while (count == CHUNK_SIZE);
>
> @@ -736,16 +757,18 @@ public class MediaDatabase {
> CHUNK_SIZE,
> chunk_count * CHUNK_SIZE), null);
>
> - if (cursor.moveToFirst()) {
> - do {
> - String location = cursor.getString(0);
> - long time = cursor.getLong(1);
> - times.put(location, time);
> - count++;
> - } while (cursor.moveToNext());
> - }
> + if (cursor != null) {
> + if (cursor.moveToFirst()) {
> + do {
> + String location = cursor.getString(0);
> + long time = cursor.getLong(1);
> + times.put(location, time);
> + count++;
> + } while (cursor.moveToNext());
> + }
>
> - cursor.close();
> + cursor.close();
> + }
> chunk_count++;
> } while (count == CHUNK_SIZE);
>
> @@ -785,27 +808,29 @@ public class MediaDatabase {
> // java.lang.IllegalArgumentException: the bind value at
> index 1 is null
> return null;
> }
> - if (cursor.moveToFirst()) {
> - media = new MediaWrapper(uri,
> - cursor.getLong(0),
> - cursor.getLong(1),
> - cursor.getInt(2),
> - null, // lazy loading, see getPicture()
> - cursor.getString(3),
> - cursor.getString(4),
> - cursor.getString(5),
> - cursor.getString(6),
> - cursor.getString(7),
> - cursor.getInt(8),
> - cursor.getInt(9),
> - cursor.getString(10),
> - cursor.getInt(11),
> - cursor.getInt(12),
> - cursor.getInt(13),
> - cursor.getInt(14),
> - cursor.getLong(15));
> + if (cursor != null) {
> + if (cursor.moveToFirst()) {
> + media = new MediaWrapper(uri,
> + cursor.getLong(0),
> + cursor.getLong(1),
> + cursor.getInt(2),
> + null, // lazy loading, see getPicture()
> + cursor.getString(3),
> + cursor.getString(4),
> + cursor.getString(5),
> + cursor.getString(6),
> + cursor.getString(7),
> + cursor.getInt(8),
> + cursor.getInt(9),
> + cursor.getString(10),
> + cursor.getInt(11),
> + cursor.getInt(12),
> + cursor.getInt(13),
> + cursor.getInt(14),
> + cursor.getLong(15));
> + }
> + cursor.close();
> }
> - cursor.close();
> return media;
> }
>
> @@ -821,19 +846,21 @@ public class MediaDatabase {
> MEDIA_LOCATION + "=?",
> new String[] { uri.toString() },
> null, null, null);
> - if (cursor.moveToFirst()) {
> - blob = cursor.getBlob(0);
> - if (blob != null && blob.length > 1 && blob.length < 500000) {
> - try {
> - picture = BitmapFactory.decodeByteArray(blob, 0,
> blob.length);
> - } catch(OutOfMemoryError e) {
> - picture = null;
> - } finally {
> - blob = null;
> + if (cursor != null) {
> + if (cursor.moveToFirst()) {
> + blob = cursor.getBlob(0);
> + if (blob != null && blob.length > 1 && blob.length <
> 500000) {
> + try {
> + picture = BitmapFactory.decodeByteArray(blob, 0,
> blob.length);
> + } catch (OutOfMemoryError e) {
> + picture = null;
> + } finally {
> + blob = null;
> + }
> }
> }
> + cursor.close();
> }
> - cursor.close();
> return picture;
> }
>
> @@ -951,14 +978,16 @@ public class MediaDatabase {
> DIR_TABLE_NAME,
> new String[] { DIR_ROW_PATH },
> null, null, null, null, null);
> - cursor.moveToFirst();
> - if (!cursor.isAfterLast()) {
> - do {
> - File dir = new File(cursor.getString(0));
> - paths.add(dir);
> - } while (cursor.moveToNext());
> + if (cursor != null) {
> + cursor.moveToFirst();
> + if (!cursor.isAfterLast()) {
> + do {
> + File dir = new File(cursor.getString(0));
> + paths.add(dir);
> + } while (cursor.moveToNext());
> + }
> + cursor.close();
> }
> - cursor.close();
>
> return paths;
> }
> @@ -1030,10 +1059,12 @@ public class MediaDatabase {
> MRL_DATE + " DESC",
> MRL_TABLE_SIZE);
>
> - while (cursor.moveToNext()) {
> - history.add(cursor.getString(0));
> + if (cursor != null) {
> + while (cursor.moveToNext()) {
> + history.add(cursor.getString(0));
> + }
> + cursor.close();
> }
> - cursor.close();
>
> return history;
> }
> @@ -1060,9 +1091,12 @@ public class MediaDatabase {
> NETWORK_FAV_URI + "=?",
> new String[] { uri.toString() },
> null, null, null);
> - boolean exists = cursor.moveToFirst();
> - cursor.close();
> - return exists;
> + if (cursor != null) {
> + final boolean exists = cursor.moveToFirst();
> + cursor.close();
> + return exists;
> + } else
> + return false;
> }
>
> public synchronized ArrayList<MediaWrapper> getAllNetworkFav() {
> @@ -1072,14 +1106,15 @@ public class MediaDatabase {
> Cursor cursor = mDb.query(NETWORK_FAV_TABLE_NAME,
> new String[] { NETWORK_FAV_URI , NETWORK_FAV_TITLE},
> null, null, null, null, null);
> -
> - while (cursor.moveToNext()) {
> - mw = new MediaWrapper(Uri.parse(cursor.getString(0)));
> - mw.setTitle(Uri.decode(cursor.getString(1)));
> - mw.setType(MediaWrapper.TYPE_DIR);
> - favs.add(mw);
> + if (cursor != null) {
> + while (cursor.moveToNext()) {
> + mw = new MediaWrapper(Uri.parse(cursor.getString(0)));
> + mw.setTitle(Uri.decode(cursor.getString(1)));
> + mw.setType(MediaWrapper.TYPE_DIR);
> + favs.add(mw);
> + }
> + cursor.close();
> }
> - cursor.close();
>
> return favs;
> }
> diff --git
> a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
> b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
> index a1f26a0..0bcfc30 100644
> --- a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
> +++ b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
> @@ -117,6 +117,7 @@ import org.videolan.vlc.widget.OnRepeatListener;
>
> import java.io.ByteArrayInputStream;
> import java.io.ByteArrayOutputStream;
> +import java.io.FileInputStream;
> import java.io.FileNotFoundException;
> import java.io.FileOutputStream;
> import java.io.IOException;
> @@ -2506,11 +2507,13 @@ public class VideoPlayerActivity extends
> AppCompatActivity implements IVLCVout.C
>
> Cursor returnCursor =
> getContentResolver().query(data, null,
> null, null, null);
> - if (returnCursor != null &&
> returnCursor.getCount() > 0) {
> - int nameIndex =
> returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
> - if (nameIndex > -1) {
> - returnCursor.moveToFirst();
> - title = returnCursor.getString(nameIndex);
> + if (returnCursor != null) {
> + if (returnCursor.getCount() > 0) {
> + int nameIndex =
> returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
> + if (nameIndex > -1) {
> + returnCursor.moveToFirst();
> + title =
> returnCursor.getString(nameIndex);
> + }
> }
> returnCursor.close();
> }
> diff --git a/vlc-android/src/org/videolan/vlc/util/Util.java
> b/vlc-android/src/org/videolan/vlc/util/Util.java
> index 8bee66e..26694a6 100644
> --- a/vlc-android/src/org/videolan/vlc/util/Util.java
> +++ b/vlc-android/src/org/videolan/vlc/util/Util.java
> @@ -358,7 +358,7 @@ public class Util {
> return false;
> }
> } else {
> - return false;
> + return false;
> }
> }
>
> --
> 2.1.4
>
> _______________________________________________
> Android mailing list
> Android at videolan.org
> https://mailman.videolan.org/listinfo/android
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/android/attachments/20150706/873a628d/attachment-0001.html>
More information about the Android
mailing list