File fixes_for_leap15.3.patch of Package virtualbox.openSUSE_Leap_15.3_Update
Index: VirtualBox-7.0.4/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
===================================================================
--- VirtualBox-7.0.4.orig/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
+++ VirtualBox-7.0.4/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
@@ -147,9 +147,9 @@
#include <linux/interrupt.h>
#include <linux/completion.h>
#include <linux/compiler.h>
-#if RTLNX_VER_MIN(5,9,0) || RTLNX_SUSE_MAJ_PREREQ(15,3) /* linux/fs.h defined HAVE_UNLOCKED_IOCTL from 2.6.11 up to 5.9 (also 5.3.18-56 in SLES15-SP3), when it became an implicit assumption. */
+//#if RTLNX_VER_MIN(5,9,0) || RTLNX_SUSE_MAJ_PREREQ(15,3) /* linux/fs.h defined HAVE_UNLOCKED_IOCTL from 2.6.11 up to 5.9 (also 5.3.18-56 in SLES15-SP3), when it became an implicit assumption. */
# define HAVE_UNLOCKED_IOCTL 1 /* We use this in a couple of places, so for now just define it for 5.9+ too. */
-#endif
+//#endif
#if !defined(HAVE_UNLOCKED_IOCTL) && RTLNX_VER_MAX(2,6,38)
# include <linux/smp_lock.h>
#endif
Index: VirtualBox-7.0.4/src/libs/xpcom18a4/python/src/PyXPCOM.h
===================================================================
--- VirtualBox-7.0.4.orig/src/libs/xpcom18a4/python/src/PyXPCOM.h
+++ VirtualBox-7.0.4/src/libs/xpcom18a4/python/src/PyXPCOM.h
@@ -191,7 +191,7 @@ extern "C" PyAPI_FUNC(const char *) PyUn
# endif
/* PyUnicode_AsUTF8 is just PyUnicode_AsUTF8AndSize without returning a size. */
-# define PyUnicode_AsUTF8(o) PyUnicode_AsUTF8AndSize(o, NULL)
+// # define PyUnicode_AsUTF8(o) (const char *)PyUnicode_AsUTF8AndSize(o, NULL)
DECLINLINE(int) PyRun_SimpleString(const char *pszCode)
{
Index: VirtualBox-7.0.4/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
===================================================================
--- VirtualBox-7.0.4.orig/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
+++ VirtualBox-7.0.4/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
@@ -121,7 +121,7 @@ void DoLogMessage(const char *methodName
#if PY_MAJOR_VERSION <= 2
c += PyString_AsString(repr);
#else
- c += PyUnicode_AsUTF8(repr);
+ c += PyUnicode_AsUTF8AndSize(repr, NULL);
#endif
Py_DECREF(repr);
}
@@ -203,7 +203,7 @@ PRBool PyXPCOM_FormatGivenException(nsCS
#if PY_MAJOR_VERSION <= 2
streamout += PyString_AsString(temp);
#else
- streamout += PyUnicode_AsUTF8(temp);
+ streamout += PyUnicode_AsUTF8AndSize(temp, NULL);
#endif
Py_DECREF(temp);
} else
@@ -215,7 +215,7 @@ PRBool PyXPCOM_FormatGivenException(nsCS
#if PY_MAJOR_VERSION <= 2
streamout += PyString_AsString(temp);
#else
- streamout += PyUnicode_AsUTF8(temp);
+ streamout += PyUnicode_AsUTF8AndSize(temp, NULL);
#endif
Py_DECREF(temp);
} else
@@ -440,10 +440,11 @@ char *PyTraceback_AsString(PyObject *exc
#if PY_MAJOR_VERSION <= 2
char *tempResult = (char *)PyString_AsString(obResult);
#elif PY_MINOR_VERSION <= 6
- char *tempResult = (char *)PyUnicode_AsUTF8(obResult);
+ char *tempResult = (char *)PyBytes_AsString(obResult);
+#elif PY_MINOR_VERSION <= 6
+ const char *tempResult = PyUnicode_AsUTF8AndSize(obResult, NULL);
#else
- /* PyUnicode_AsUTF8() is const char * as of Python 3.7, char * earlier. */
- const char *tempResult = (const char *)PyUnicode_AsUTF8(obResult);
+ const char *tempResult = (const char *)PyUnicode_AsUTF8AndSize(obResult, NULL);
#endif
result = (char *)PyMem_Malloc(strlen(tempResult)+1);
if (result==NULL)
Index: VirtualBox-7.0.4/src/libs/xpcom18a4/python/src/PyGBase.cpp
===================================================================
--- VirtualBox-7.0.4.orig/src/libs/xpcom18a4/python/src/PyGBase.cpp
+++ VirtualBox-7.0.4/src/libs/xpcom18a4/python/src/PyGBase.cpp
@@ -117,7 +117,7 @@ PyG_Base::PyG_Base(PyObject *instance, c
#if PY_MAJOR_VERSION <= 2
szRepr = PyString_AsString(r);
#else
- szRepr = PyUnicode_AsUTF8(r);
+ szRepr = PyUnicode_AsUTF8AndSize(r, NULL);
#endif
if (szRepr==NULL) szRepr = "";
int reprOffset = *szRepr=='<' ? 1 : 0;
Index: VirtualBox-7.0.4/src/libs/xpcom18a4/python/src/PyIID.cpp
===================================================================
--- VirtualBox-7.0.4.orig/src/libs/xpcom18a4/python/src/PyIID.cpp
+++ VirtualBox-7.0.4/src/libs/xpcom18a4/python/src/PyIID.cpp
@@ -137,7 +137,7 @@ Py_nsIID::IIDFromPyObject(PyObject *ob,
ok = iid.Parse(PyString_AsString(ob));
#else
if (PyUnicode_Check(ob)) {
- ok = iid.Parse(PyUnicode_AsUTF8(ob));
+ ok = iid.Parse(PyUnicode_AsUTF8AndSize(ob, NULL));
#endif
if (!ok) {
PyXPCOM_BuildPyException(NS_ERROR_ILLEGAL_VALUE);
Index: VirtualBox-7.0.4/src/libs/xpcom18a4/python/src/VariantUtils.cpp
===================================================================
--- VirtualBox-7.0.4.orig/src/libs/xpcom18a4/python/src/VariantUtils.cpp
+++ VirtualBox-7.0.4/src/libs/xpcom18a4/python/src/VariantUtils.cpp
@@ -141,7 +141,7 @@ PyObject *PyObject_FromNSString( const n
#if PY_MAJOR_VERSION <= 2
char* dest = (char *)PyString_AS_STRING(ret);
#else
- char* dest = (char *)PyUnicode_AsUTF8(ret);
+ char* dest = (char *)PyUnicode_AsUTF8AndSize(ret, NULL);
#endif
copy_string(s.BeginReading(fromBegin), s.EndReading(fromEnd), dest);
}
@@ -393,7 +393,7 @@ PRBool FillSingleArray(void *array_ptr,
#if PY_MAJOR_VERSION <= 2
sequence_ob = PyObject_Str(sequence_ob);
#else
- sequence_ob = PyUnicode_AsUTF8String(sequence_ob);
+ sequence_ob = (PyObject *)PyUnicode_AsUTF8AndSize(sequence_ob, NULL);
#endif
} else
release_seq = PR_FALSE;
@@ -402,7 +402,7 @@ PRBool FillSingleArray(void *array_ptr,
#if PY_MAJOR_VERSION <= 2
memcpy(pthis, PyString_AS_STRING(sequence_ob), sequence_size);
#else
- memcpy(pthis, PyUnicode_AsUTF8(sequence_ob), sequence_size);
+ memcpy(pthis, PyUnicode_AsUTF8AndSize(sequence_ob, NULL), sequence_size);
#endif
if (release_seq)
{
@@ -477,7 +477,7 @@ PRBool FillSingleArray(void *array_ptr,
PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
BREAK_FALSE;
}
- FILL_SIMPLE_POINTER( char, *PyUnicode_AsUTF8(val) );
+ FILL_SIMPLE_POINTER( char, *PyUnicode_AsUTF8AndSize(val, NULL) );
#endif
break;
@@ -549,7 +549,7 @@ PRBool FillSingleArray(void *array_ptr,
PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
BREAK_FALSE;
}
- if ((val_use = PyUnicode_AsUTF8String(val))==NULL)
+ if ((val_use = (PyObject *)PyUnicode_AsUTF8AndSize(val, NULL))==NULL)
BREAK_FALSE;
const char *sz = PyBytes_AS_STRING(val_use);