summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authoriive <iive@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-07-26 22:06:30 +0000
committeriive <iive@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-07-26 22:06:30 +0000
commit3934b160a82913e18fe8f549191944b25bcd8bb3 (patch)
tree630803a26b35fa2fa7e50d01d563abf4967096e8 /libmpdemux
parentc2851fe22084fa5115b73c68fde2f55997f298f6 (diff)
downloadmpv-3934b160a82913e18fe8f549191944b25bcd8bb3.tar.bz2
mpv-3934b160a82913e18fe8f549191944b25bcd8bb3.tar.xz
prevent segfault on shmem failer
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12900 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/cache2.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libmpdemux/cache2.c b/libmpdemux/cache2.c
index d6ef3bccd8..686e5a7361 100644
--- a/libmpdemux/cache2.c
+++ b/libmpdemux/cache2.c
@@ -196,6 +196,8 @@ cache_vars_t* cache_init(int size,int sector){
#else
cache_vars_t* s=malloc(sizeof(cache_vars_t));
#endif
+ if(s==NULL) return NULL;
+
memset(s,0,sizeof(cache_vars_t));
num=size/sector;
if(num < 16){
@@ -208,6 +210,16 @@ cache_vars_t* cache_init(int size,int sector){
#else
s->buffer=malloc(s->buffer_size);
#endif
+
+ if(s->buffer == NULL){
+#ifndef WIN32
+ shmem_free(s,sizeof(cache_vars_t));
+#else
+ free(s);
+#endif
+ return NULL;
+ }
+
s->fill_limit=8*sector;
s->back_size=s->buffer_size/2;
return s;
@@ -249,6 +261,7 @@ int stream_enable_cache(stream_t *stream,int size,int min,int prefill){
}
s=cache_init(size,ss);
+ if(s == NULL) return 0;
stream->cache_data=s;
s->stream=stream; // callback
s->prefill=prefill;