Package: tendra
Version: 4.1.2-19
Severity: important
Tags: upstream patch

For example, compiling of tendra_nil.c:

int f(int a, int b) {
        return (b & ~a) | ~b;
}

int main() {
        f(0, 0);
        return 0;
}

$ tendracc tendra_nil.c
tcc: Error: Caught signal 11 in
'/usr/lib/TenDRA/machines/linux/2.6.32-3-amd64/80x86/bin/trans'.

I found and fix mistake without good understanding of tendracc. But because of
fix is influence only on situations which must not appear in normal cases, it
must not broke main logic.



-- System Information:
Debian Release: 6.0.6
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.32-5-686 (SMP w/1 CPU core)
Locale: LANG=ru_UA.utf8, LC_CTYPE=ru_UA.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages tendra depends on:
ii  binutils                      2.20.1-16  The GNU assembler, linker and bina
ii  libc6                         2.11.3-4   Embedded GNU C Library: Shared lib

Versions of packages tendra recommends:
ii  libc6-dev [libc-dev]          2.11.3-4   Embedded GNU C Library: Developmen

Versions of packages tendra suggests:
ii  tendra-doc                    4.1.2-8    Documentation for the TenDRA C/C++

-- no debconf information
diff -r tendra-4.1.2/src/installers/common/construct/exp.c tendra-fix/src/installers/common/construct/exp.c
724c724
<   while (*x != e)
---
>   while (x != nilexp && *x != e)
786,794c786,795
<   if (last (*ref))
<     setlast (e);
<   else
<     clearlast (e);
<   bro (e) = bro (*ref);
<   *ref = e;
<   if (scope == old)
<     return;
<   altered (e, scope);
---
>   if (ref != nilexp) {
>     if (last (*ref))
>       setlast (e);
>     else
>       clearlast (e);
>     bro (e) = bro (*ref);
>     *ref = e;
>     if (scope != old)
>       altered (e, scope);
>   }
1210a1212
>

Reply via email to