[vlc-commits] os2: make high-memory safe

2014-02-27 Thread KO Myung-Hun
vlc/vlc-2.1 | branch: master | KO Myung-Hun kom...@gmail.com | Thu Feb 27 
13:06:59 2014 +0900| [e18f9e96eb6de52f2f9637f1535fbcc375d37f8b] | committer: 
Jean-Baptiste Kempf

os2: make high-memory safe

Some OS/2 APIs are not high-memory safe. So there are needs to use wrapper
functions to make them high-memory safe.

Signed-off-by: Rémi Denis-Courmont r...@remlab.net
(cherry picked from commit 8a62913aa35ed91c415c531ad7d5876e75b6dc1b)

Signed-off-by: KO Myung-Hun k...@chollian.net
Signed-off-by: Jean-Baptiste Kempf j...@videolan.org

 http://git.videolan.org/gitweb.cgi/vlc/vlc-2.1.git/?a=commit;h=e18f9e96eb6de52f2f9637f1535fbcc375d37f8b
---

 include/vlc_common.h   |1 +
 modules/access/vcd/cdrom.c |   56 
 2 files changed, 57 insertions(+)

diff --git a/include/vlc_common.h b/include/vlc_common.h
index 6116f8e..3292423 100644
--- a/include/vlc_common.h
+++ b/include/vlc_common.h
@@ -408,6 +408,7 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,  /* 
variable's object */
 #   define OS2EMX_PLAIN_CHAR
 #   define INCL_BASE
 #   define INCL_PM
+#   include os2safe.h
 #   include os2.h
 #endif
 
diff --git a/modules/access/vcd/cdrom.c b/modules/access/vcd/cdrom.c
index 17ce5ed..f0952d3 100644
--- a/modules/access/vcd/cdrom.c
+++ b/modules/access/vcd/cdrom.c
@@ -80,7 +80,63 @@
 #   include sys/ioctl.h
 #   include linux/cdrom.h
 #elif defined( __OS2__ )
+#   include os2safe.h
 #   include os2.h
+
+/*
+ * vlc_DosDevIOCtl: high memory safe wrapper for DosDevIOCtl
+ *
+ * Unfortunately, DosDevIOCtl() is not high memory safe API, and is not
+ * covered by os2safe.h. So define a wrapper function for it here.
+ */
+
+static APIRET vlc_DosDevIOCtl( HFILE hdevice, ULONG category, ULONG function,
+   PVOID pParams, ULONG cbParamLenMax,
+   PULONG pcbParamLen, PVOID pData,
+   ULONG cbDataLenMax, PULONG pcbDataLen )
+{
+PVOID pParamsLow = NULL;
+PVOID pDataLow = NULL;
+ULONG cbParamLenLow;
+ULONG cbDataLenLow;
+
+APIRET rc;
+
+rc = DosAllocMem( pParamsLow, cbParamLenMax, fALLOC );
+if( rc )
+goto exit_free;
+
+rc = DosAllocMem( pDataLow, cbDataLenMax, fALLOC );
+if( rc )
+goto exit_free;
+
+memcpy( pParamsLow, pParams, cbParamLenMax );
+memcpy( pDataLow, pData, cbDataLenMax );
+
+cbParamLenLow = *pcbParamLen;
+cbDataLenLow  = *pcbDataLen;
+
+rc = DosDevIOCtl( hdevice, category, function, pParamsLow,
+  cbParamLenMax, cbParamLenLow, pDataLow, cbDataLenMax,
+  cbDataLenLow );
+
+if( !rc )
+{
+memcpy( pParams, pParamsLow, cbParamLenMax );
+memcpy( pData, pDataLow, cbDataLenMax );
+
+*pcbParamLen = cbParamLenLow;
+*pcbDataLen  = cbDataLenLow;
+}
+
+exit_free:
+DosFreeMem( pParamsLow);
+DosFreeMem( pDataLow);
+
+return rc;
+}
+
+#   define DosDevIOCtl vlc_DosDevIOCtl
 #else
 #   error FIXME
 #endif

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits


[vlc-commits] os2: make high-memory safe

2014-02-23 Thread KO Myung-Hun
vlc | branch: master | KO Myung-Hun kom...@gmail.com | Sun Feb 23 19:38:10 
2014 +0900| [8a62913aa35ed91c415c531ad7d5876e75b6dc1b] | committer: Rémi 
Denis-Courmont

os2: make high-memory safe

Some OS/2 APIs are not high-memory safe. So there are needs to use wrapper
functions to make them high-memory safe.

Signed-off-by: Rémi Denis-Courmont r...@remlab.net

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8a62913aa35ed91c415c531ad7d5876e75b6dc1b
---

 include/vlc_common.h   |1 +
 modules/access/vcd/cdrom.c |   56 
 2 files changed, 57 insertions(+)

diff --git a/include/vlc_common.h b/include/vlc_common.h
index 7e84f16..8b4b923 100644
--- a/include/vlc_common.h
+++ b/include/vlc_common.h
@@ -409,6 +409,7 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,  /* 
variable's object */
 #   define OS2EMX_PLAIN_CHAR
 #   define INCL_BASE
 #   define INCL_PM
+#   include os2safe.h
 #   include os2.h
 #endif
 
diff --git a/modules/access/vcd/cdrom.c b/modules/access/vcd/cdrom.c
index e536315..d55bef4 100644
--- a/modules/access/vcd/cdrom.c
+++ b/modules/access/vcd/cdrom.c
@@ -78,7 +78,63 @@
 #   include sys/ioctl.h
 #   include linux/cdrom.h
 #elif defined( __OS2__ )
+#   include os2safe.h
 #   include os2.h
+
+/*
+ * vlc_DosDevIOCtl: high memory safe wrapper for DosDevIOCtl
+ *
+ * Unfortunately, DosDevIOCtl() is not high memory safe API, and is not
+ * covered by os2safe.h. So define a wrapper function for it here.
+ */
+
+static APIRET vlc_DosDevIOCtl( HFILE hdevice, ULONG category, ULONG function,
+   PVOID pParams, ULONG cbParamLenMax,
+   PULONG pcbParamLen, PVOID pData,
+   ULONG cbDataLenMax, PULONG pcbDataLen )
+{
+PVOID pParamsLow = NULL;
+PVOID pDataLow = NULL;
+ULONG cbParamLenLow;
+ULONG cbDataLenLow;
+
+APIRET rc;
+
+rc = DosAllocMem( pParamsLow, cbParamLenMax, fALLOC );
+if( rc )
+goto exit_free;
+
+rc = DosAllocMem( pDataLow, cbDataLenMax, fALLOC );
+if( rc )
+goto exit_free;
+
+memcpy( pParamsLow, pParams, cbParamLenMax );
+memcpy( pDataLow, pData, cbDataLenMax );
+
+cbParamLenLow = *pcbParamLen;
+cbDataLenLow  = *pcbDataLen;
+
+rc = DosDevIOCtl( hdevice, category, function, pParamsLow,
+  cbParamLenMax, cbParamLenLow, pDataLow, cbDataLenMax,
+  cbDataLenLow );
+
+if( !rc )
+{
+memcpy( pParams, pParamsLow, cbParamLenMax );
+memcpy( pData, pDataLow, cbDataLenMax );
+
+*pcbParamLen = cbParamLenLow;
+*pcbDataLen  = cbDataLenLow;
+}
+
+exit_free:
+DosFreeMem( pParamsLow);
+DosFreeMem( pDataLow);
+
+return rc;
+}
+
+#   define DosDevIOCtl vlc_DosDevIOCtl
 #else
 #   error FIXME
 #endif

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits