LINUX.ORG.RU

История изменений

Исправление tyamur, (текущая версия) :


// java code

int nativePtr;

native int nCreate(); // return nativePtr

....

native int nGetType(int i); // в качестве параметра используется nativePtr выданный ранее nCreate();

// C++ code

int Java_com_jni_core_Object3d_nCreate()
{
  Object3d *v0; // esi
  SmartObject *v2; // [esp+4h] [ebp-14h]

  v0 = operator new(0x28Cu);
  Object3d::Object3d(v0);
  return JavaPtr::hold(v0, v2);

// первые два a1 и а2 не используются(JNIENV* и jobject)
// 
int __cdecl Java_com_jni_core_Object3d_nGetType(int a1, int a2, _DWORD **a3)
{
  if ( !*a3 )
    BUG();
  return (*(***a3 + 56))(**a3);
}

Я так предполагаю что **a3 это Object3d в итоге.

Исправление tyamur, :


// java code

int nativePtr;

native int nCreate(); // return nativePtr

....

native int nGetType(int i); // в качестве параметра используется nativePtr выданный ранее nCreate();

// C++ code

int Java_com_jni_core_Object3d_nCreate()
{
  Object3d *v0; // esi
  SmartObject *v2; // [esp+4h] [ebp-14h]

  v0 = operator new(0x28Cu);
  Object3d::Object3d(v0);
  return JavaPtr::hold(v0, v2);

// первые два a1 и а2 не используются(JNIENV* и jobject)
// 
int __cdecl Java_com_jni_core_Object3d_nGetType(int a1, int a2, _DWORD **a3)
{
  if ( !*a3 )
    BUG();
  return (*(***a3 + 56))(**a3);
}

Исправление tyamur, :


// java code

int nativePtr;

native int nCreate(); // return nativePtr

....

native int nGetType(int i); // в качестве параметра используется nativePtr выданный ранее nCreate();

// C++ code

int Java_com_jni_core_Object3d_nCreate()
{
  Object3d *v0; // esi
  SmartObject *v2; // [esp+4h] [ebp-14h]

  v0 = operator new(0x28Cu);
  Object3d::Object3d(v0);
  return JavaPtr::hold(v0, v2);

// первые два a1 и а2 не используются(JNIENV* и jobject)
// 
int __cdecl Java_com_jni_core_Object3d_nGetType(int a1, int a2, _DWORD **a3)
{
  if ( !*a3 )
    BUG();
  return (*(***a3 + 56))(**a3);
}

Исходная версия tyamur, :


// java code

int nativePtr;

native int nCreare(); // return nativePtr

....

native int nGetType(int i); // в качестве параметра используется nativePtr выданный ранее nCreat();

// C++ code

int Java_com_jni_core_Object3d_nCreate()
{
  Object3d *v0; // esi
  SmartObject *v2; // [esp+4h] [ebp-14h]

  v0 = operator new(0x28Cu);
  Object3d::Object3d(v0);
  return JavaPtr::hold(v0, v2);

// первые два a1 и а2 не используются(JNIENV* и jobject)
// 
int __cdecl Java_com_jni_core_Object3d_nGetType(int a1, int a2, _DWORD **a3)
{
  if ( !*a3 )
    BUG();
  return (*(***a3 + 56))(**a3);
}