1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
# This file is part of Mailfromd testsuite. -*- Autotest -*-
# Copyright (C) 2010-2025 Sergey Poznyakoff
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AT_SETUP([module: variable allocation])
AT_KEYWORDS([module module07 import import06 variable variables])
# Description: Mailfromd 7.0 would fail to allocate static variables
# from required modules as well as public variables not accessed directly
# from the uplevel module. For example, given the included prog, v7.0
# would produce:
# foo
# foo
# foo
# qux
# Affected-versions: < 7.0
# Additional-info:
AT_DATA([mod1.mfl],
[[module 'mod1'.
string s1 "foo"
string s2 "bar"
static string s3 "baz"
static const c1 "qux"
func print_text()
do
echo s1
echo s2
echo s3
echo c1
done
]])
AT_DATA([mod2.mfl],
[[module 'mod2'.
require 'mod1'
func mod2_init()
do
print_text()
done
]])
MFT_RUN([
#pragma regex +extended
require 'mod2'
func main(...)
returns number
do
mod2_init()
return 0
done
],
[],
[0],
[],
[foo
bar
baz
qux
])
AT_CLEANUP
|