Browse Source

Fix network discoverer crash when share name contains special chars

merge-requests/1990/head
Nicolas Pomepuy 3 years ago
parent
commit
78b22fef71
  1. 35
      application/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt

35
application/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt

@ -26,17 +26,30 @@ import android.os.Handler
import android.os.HandlerThread
import android.os.Process
import android.text.format.Formatter
import android.util.Log
import androidx.collection.SimpleArrayMap
import androidx.lifecycle.MutableLiveData
import kotlinx.coroutines.*
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.CompletionHandler
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.ObsoleteCoroutinesApi
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.cancel
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.SendChannel
import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.channelFlow
import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.libvlc.interfaces.IMedia
import org.videolan.libvlc.util.MediaBrowser
import org.videolan.libvlc.util.MediaBrowser.EventListener
@ -53,7 +66,18 @@ import org.videolan.tools.DependencyProvider
import org.videolan.tools.Settings
import org.videolan.tools.livedata.LiveDataset
import org.videolan.vlc.R
import org.videolan.vlc.util.*
import org.videolan.vlc.util.ModelsHelper
import org.videolan.vlc.util.TextUtils
import org.videolan.vlc.util.ascComp
import org.videolan.vlc.util.descComp
import org.videolan.vlc.util.fileReplacementMarker
import org.videolan.vlc.util.folderReplacementMarker
import org.videolan.vlc.util.getFilenameAscComp
import org.videolan.vlc.util.getFilenameDescComp
import org.videolan.vlc.util.getTvAscComp
import org.videolan.vlc.util.getTvDescComp
import org.videolan.vlc.util.isBrowserMedia
import org.videolan.vlc.util.isMedia
import java.io.File
const val TAG = "VLC/BrowserProvider"
@ -354,7 +378,12 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me
}
protected open suspend fun findMedia(media: IMedia): MediaLibraryItem? {
val mw: MediaWrapper = MLServiceLocator.getAbstractMediaWrapper(media)
val mw: MediaWrapper = try {
MLServiceLocator.getAbstractMediaWrapper(media)
} catch (e: Exception) {
Log.e(TAG, "Unable to generate the media wrapper. It usually happen when the IMedia fields have some encoding issues", e)
return null
}
media.release()
if (!mw.isMedia()) {
if (showAll || mw.isBrowserMedia()) return mw

Loading…
Cancel
Save