diff options
author | Richard Jones <rjones@redhat.com> | 2010-07-11 23:32:14 +0100 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2010-07-11 23:32:14 +0100 |
commit | c94240fad3f6bc1befc1c7ba6de253555a58dce3 (patch) | |
tree | 6b63d3b41ee5272db9796292518be4c5dd506b38 | |
parent | 77d38592f59f146c5ef249a3f7036cf2a1e45acd (diff) | |
download | hivex-c94240fad3f6bc1befc1c7ba6de253555a58dce3.tar.gz hivex-c94240fad3f6bc1befc1c7ba6de253555a58dce3.tar.xz hivex-c94240fad3f6bc1befc1c7ba6de253555a58dce3.zip |
perl: Fix generated XS code for value_dword binding.
Thanks to Hilko Bengen for spotting the problem.
-rwxr-xr-x | generator/generator.ml | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/generator/generator.ml b/generator/generator.ml index 03f8c20..5bd46ee 100755 --- a/generator/generator.ml +++ b/generator/generator.ml @@ -2421,7 +2421,6 @@ DESTROY (h) | RErrDispose -> assert false | RHive -> assert false - | RInt32 | RNode | RValue -> pr "PREINIT:\n"; @@ -2542,6 +2541,21 @@ DESTROY (h) pr " PUSHs (sv_2mortal (newSVpvn (r, len)));\n"; pr " free (r);\n"; + | RInt32 -> + pr "PREINIT:\n"; + pr " int32_t r;\n"; + pr " CODE:\n"; + pr " errno = 0;\n"; + pr " r = hivex_%s (%s);\n" + name (String.concat ", " c_params); + free_args (); + pr " if (r == -1 && errno != 0)\n"; + pr " croak (\"%%s: %%s\", \"%s\", strerror (errno));\n" + name; + pr " RETVAL = newSViv (r);\n"; + pr " OUTPUT:\n"; + pr " RETVAL\n" + | RInt64 -> pr "PREINIT:\n"; pr " int64_t r;\n"; |