fixed the segfault! hand-initialized HParser needed PB_MIN set.

This commit is contained in:
Meredith L. Patterson 2013-11-19 19:00:58 -06:00
parent 62af9f6222
commit 10c8b0bd22
4 changed files with 13 additions and 9 deletions

View file

@ -6,15 +6,15 @@ pythonenv = env.Clone(IMPLICIT_COMMAND_DEPENDENCIES = 0)
pythonenv.Append(CPPPATH = ['../../', '/usr/include/python2.7'])
pythonenv.Append(CCFLAGS = ['-fpic', '-DSWIG', '-Wno-all', '-Wno-extra', '-Wno-error'])
#pythonenv.Append(LIBS = ['hammer'])
#pythonenv.Append(LIBPATH = ['../../'])
pythonenv.Append(LIBS = ['hammer'])
pythonenv.Append(LIBPATH = ['../../'])
pythonenv.Append(SWIGFLAGS = ['-DHAMMER_INTERNAL__NO_STDARG_H', '-Isrc/', '-python'])
pythonenv.Command("hammer.i", "../swig/hammer.i", Copy("$TARGET", "$SOURCE"))
swig = ['hammer.i']
libhammer_python = pythonenv.SharedLibrary('hammer', libhammer_shared + swig, SHLIBPREFIX='_')
libhammer_python = pythonenv.SharedLibrary('hammer', swig, SHLIBPREFIX='_')
pytestenv = pythonenv.Clone()
pytestenv['ENV']['LD_LIBRARY_PATH'] = os.path.dirname(str(libhammer_shared[0]))

View file

@ -477,7 +477,7 @@ class TestNot2(unittest.TestCase):
# # def test_failure(self):
# # pass
class TestARightrec(unittest.TestCase):
class TestRightrec(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.parser = h.h_indirect()
@ -486,13 +486,13 @@ class TestARightrec(unittest.TestCase):
def test_success(self):
tree = h.h_parse(self.parser, "a", 1).ast.token_data.seq
self.assertEqual(tree[0].token_data.uint, ord("a"))
tree = h_parse(self.parser, "aa", 2).ast.token_data.seq
tree = h.h_parse(self.parser, "aa", 2).ast.token_data.seq
self.assertEqual(tree[0].token_data.uint, ord("a"))
self.assertEqual(tree[1].token_data.seq[0].token_data.uint, ord("a"))
tree = h_parse(self.parser, "aaa", 3).ast.token_data.seq
tree = h.h_parse(self.parser, "aaa", 3).ast.token_data.seq
self.assertEqual(tree[0].token_data.uint, ord("a"))
self.assertEqual(tree[1].token_data.seq[0].token_data.uint, ord("a"))
self.assertEqual(tree[1].token_data.seq[1].token_data.seq[0].uint, ord("a"))
self.assertEqual(tree[1].token_data.seq[1].token_data.seq[0].token_data.uint, ord("a"))
def test_failure(self):
pass

View file

@ -143,6 +143,8 @@ HParser* h_choice__ma(HAllocator* mm__, void *args[]) {
s->len = len;
HParser *ret = h_new(HParser, 1);
ret->vtable = &choice_vt; ret->env = (void*)s;
ret->vtable = &choice_vt;
ret->env = (void*)s;
ret->backend = PB_MIN;
return ret;
}

View file

@ -159,6 +159,8 @@ HParser* h_sequence__ma(HAllocator* mm__, void *args[]) {
s->len = len;
HParser *ret = h_new(HParser, 1);
ret->vtable = &sequence_vt; ret->env = (void*)s;
ret->vtable = &sequence_vt;
ret->env = (void*)s;
ret->backend = PB_MIN;
return ret;
}