forked from ldmud/ldmud
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.OLD
10140 lines (8816 loc) · 483 KB
/
CHANGELOG.OLD
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
This file lists all changes made to the game driver in all glory detail up
until June 2011. For more recent changes please have a look at the changelog
of the source repository (git log).
See the file HISTORY for a user-oriented summary of all the changes.
18-Jun-2011 (Gnomi)
- Corrected handling of IPv4 addresses with USE_IPV6.
(comm.c)
- Updated UNItopia settings file.
(settings/unitopia)
28-Apr-2011 (Gnomi)
- Upon a parse error (eg. #';) the lexer returned a closure with an
illegal function index (instead of the one for F_ILLEGAL) that could
result in a crash later in the compiler.
(lex.c)
08-Mar-2011 (Gnomi)
- Allow wildcarded super calls with arguments. (fixes #257)
(prolang.y, interpret.c)
22-Feb-2011 (Gnomi)
- Added checks for destroyed objects in clone_object(), process_string()
and transfer(). (fixes #772)
(simulate.c, efuns.c, object.c)
12-May-2010 (Gnomi)
- Corrected the call to mysql_options. Use the generic error message
when mysql returned an empty one.
(pkg-mysql.c)
04-May-2010 (Fuchur)
- enable automatic reconnects on MySQL database handles. (see #750)
(pkg-mysql.c, doc/concepts/mysql, doc/efun[.de]/db_connect[.de])
04-May-2010 (Gnomi)
- Corrected wrong follow-up error messages about bad efun arguments.
(prolang.y)
03-May-2010 (Gnomi)
- insert_inherited() returned the function index for the first match
and the program pointer for the last match on wildcarded super calls,
resulting in memory access beyond the program block.
(prolang.y)
- The check for deprecated variables didn't take the number of virtual
variables into account while looking up a variable index in the
non-virtual variable block.
(prolang.y)
- Corrected an error message for wrong types in restore_object().
(object.c)
13-Feb-2010 (Zesstra)
- Fixed Div-by-Zero in svalue_size().
svalue_size() divides the memory used for a string by its refcount, but
0 refs are valid for strings. This leads to a crash in then wiz command
'dumpallobj', unless the refcount is checked before division. (#725).
(dumpstat.c)
10-Feb-2010 (Gnomi)
- optpat() shouldn't read over the end of the given ed command. (#722)
(ed.c)
08-Feb-2010 (Gnomi)
- Explicit context variables overwrote the types of the closure's
arguments. (#711)
(prolang.y)
31-Jan-2010 (Zesstra)
- Increased UDP receive buffer, because UDP datagrams can be much larger
than 1024 bytes and the rest of the datagram would be discarded upon
recvfrom(). Datagram lengths up to 65507 bytes (including UDP and IPv4
headers: 65535) are supported now.
(comm.c)
- Removed dirty BeOS hack. (comm.c)
27-Jan-2010 (Gnomi)
- Added pretty printers for GDB7 for the main data structures.
(src/ldmud-gdb.py, gdb/*)
25-Jan-2010 (Gnomi)
- add_action() leaked the function name string. (#713)
(actions.c)
23-Jan-2010 (Zesstra)
- get_type_info() failed to reference the function name it returns, causing
the string to loose refcounts and being eventually free'd erronenously.
(#712)
(efuns.c)
23-Jan-2010 (Gnomi)
- RTTC on a toplevel function call doesn't remove the first control
stack frame anymore. (#715)
(interpret.c)
- Heartbeats and call_outs now clear current_prog afterwards. (#715)
(simulate.c, heartbeat.c)
19-Jan-2010 (Gnomi)
- RTTC in restore_object() didn't handle nonexistent variables
correctly. (#714)
(object.c)
22-Dec-2009 (Gnomi)
- When removing unnecessary F_SAVE_ARG_FRAMEs the compiler didn't
adjust last_expression correctly in same cases leading to false
program optimizations. (#683, #708, #709)
(prolang.y)
05-Nov-2009 (Zesstra)
- Added pragma 'no_rtt_checks' for disabling the runtime type checks.
(lex.c)
04-Nov-2009 (Zesstra)
- Check types in restore_object().
The types of restored variables are checked for compatibility with their
type declaration if the objects program sets the pragma rtt_checks. If
the types are not compatible, restore_object() will raise an error.
(object.c)
- Check types of members upon restoring structs.
While restoring struct members, the types of the members are checked for
compability with their declared types.
(interpret.c, interpret.h, object.c)
03-Nov 2009 (Zesstra)
- to_struct() converts a given struct into a struct with the same type as
the template struct given as optional second argument.
This conversion is only done if the template struct is a base of the given
struct or vice versa. Otherwise an error is raised.
(efuns.c)
- Renamed baseof() to struct_baseof().
That is much more consistent to the other funtions in structs.c.
(structs.c, interpret.c, efuns.c)
02-Nov-2009 (Zesstra)
- Split f_baseof() into f_baseof() and baseof(), because some parts of the
interpreter need to know the relationship of two structs in the future.
(structs.c)
- Use shrink_array() only for alists.
Intersecting empty arrays or mappings references the null_vector instead
of creating a new empty array with shrink_array(vec,0). shrink_array is
only used in intersect_ordered_arr().
(array.c, mapping.c)
- Allow structs being children of the declared one in RTT checks.
check_rtt_compatibility() checked for identical types of structs. Instead
it should check if the declared struct (the formal argument type) is a
base of the given struct.
Also use baseof() in check_struct_op().
(interpret.c)
01-Nov-2009 (Zesstra)
- Don't try to check arguments when calling lambdas.
- Check function arguments in F_SIMUL_EFUN (if RTT checks are requested)
- Check type of return values in F_RETURN when returning from lfuns, sefuns,
lfun-Closures and RTT checks are requested.
(interpret.c)
- Removed a potential double free in struct_new_anonymous(). (structs.c)
- Record a base struct as base struct in a child struct even if the base
struct has no members. (#695)
(prolang.y)
30-Oct-2009 (Zesstra)
- Introduced new pragma rtt_checks. The pragma rtt_checks can be used to
enable type checks at runtime for a specific program.
(prolang.y, lex.c, exec.h)
- Added the function index to the function header.
To check argument types at runtime, we need the function index in the
defining program. Sometimes we only have the pointer to the function
header and it is non-trivial to get the function index from this. With
the index stored in the header we can access the function information in
the defining progp.
(exec.h, prolang.y)
- Added function check_function_args().
check_function_args() checks for the correct argument types of a function
if runtime type checking has been enabled for the program (pragma) and
there is information about the types for this function. If the arguments
don't match, errorf() is called.
For printing a meaningful name of the function argument in the error
message the function get_type_name() from prolang.y is used instead of
something own. Therefore this function is no longer static.
Added calls to F_CALL_FUNCTION, F_CALL_INHERITED/F_CALL_INHERITED_NOARGS,
apply_low(), int_call_lambda().
(interpret.c, prolang.y|h)
22-Oct-2009 (Zesstra)
- sort_array(): sort in-place if array is given as reference. (#224)
(array.c, func_spec)
21-Oct-2009 (Zesstra)
- Applied a bunch of small fixes for manpages by Coogan. (#692)
- Removed the deprecated efun tail() (#228)
The efun tail can be easily and more flexibly replaced by an sefun.
(files.c)
21-Oct-2009 (Gnomi)
- Let the player_for_flush list point to interactive_t* directly.
This avoids inconsistencies between objects and their interactive
structure caused when exec()ing. (Bug #683)
(comm.c)
18-Oct-2009 (Gnomi)
- Free the xml buffer after xml reader and writer, because they might
use it when cleaning up. (maybe #683)
(pkg-xml2.c)
- Don't call xmlCleanupParser, as it should be called when there's no more
xml processing. Don't call xmlInitParser, as it is already done on startup.
(pkg-xml2.c)
13-Oct-2009 (Gnomi)
- Deactivate tls_trustdirectory per default as /etc/ssl/certs may contain
a large number of certificates on usual installations (which are not
related to client certificates) and GnuTLS clients have a problem with
that (too large handshake data). Whoever wants to use client
certificates shall set it up explicitly.
(configure)
- Updated Avalon settings file.
(settings/avalon)
12-Oct-2009 (Gnomi)
- Pass all unknown telnet options to the mudlib. (#670)
(comm.c)
07-Oct-2009 (Gnomi)
- Check for references to destructed objects before entering them as
keys into a mapping. (#689)
(mapping.c)
06-Oct-2009 (Zesstra)
- Always enable structs (#557).
(prolang.y, lex.c, driver.h, config.h.in, func_spec)
- Always enable new inline closures (#557).
(prolang.y, config.h.in, driver.h, lex.c)
- explode("","") returned an empty array, while explode("","anything")
returned ({""}). Changed behaviour that explode will always return ({""})
if the explode string is empty. (#180)
(array.c)
04-Oct-2009 (Zesstra)
- prepend '/' in get_dir() in plain mode for entries in the root directory,
if paths are requested by GETDIR_PATH. They were omitted until now. (#501)
(files.c)
- Use CRYPTO_set_mem_functions() to register function pointers to our own
allocator functions in openssl.
(pkg-openssl.c)
21-Sep-2009 (Zesstra)
- Added new check for a woring sbrk() (#680)
The old check for SBRK_OK checked for a) a working brk() and the
possibility to replace malloc. This new check only checks if sbrk() can be
used to get a significant amount of memory (currently 50MB).
(configure.in)
- Updated and simplified check for replacing malloc, respect SBRK_OK and
HAVE_MMAP. (#680) The check now sets REPLACEABLE_MALLOC instead of
SBRK_OK. Additionally, the check was updated to current autoconf macros.
(configure.in)
- Make use of SBRK_OK and MALLOC_REPLACEABLE in the allocators.
Use this two defines to determine if a user-requested MALLOC_SBRK is
possible and define REPLACE_MALLOC accordingly. If not, undefine
MALLOC_SBRK. Use HAVE_MMAP as fallback. In case of HAVE_MMAP and
MALLOC_REPLACEABLE, REPLACE_MALLOC is set as well. (#680)
(slabmalloc.c, smalloc.c, xalloc.c)
19-Sep-2009 (Zesstra)
- removed the ptmalloc memory allocator. (#552)
(ptmalloc/, ptmalloc.c, xptmalloc.c, xalloc.c Makefile.in, configure.in)
16-Sep-2009 (Zesstra)
- 'status/malloc' commands include now the allocator in use (Patch from
Xtian, #672)
(slaballoc.c, xptmalloc.c, smalloc.c)
13-Sep 2009 (Zesstra)
- Replaced Bob Jenkins Hash3 by Murmurhash2. During tests with strings from
MorgenGrauen and Avalon the Murmurhash2 performed just as well as Jenkins
Hash, but the hashing speed was nearly doubled.
(hash.h, hash.c)
- Changed index calculation for the struct table from Modula to the faster
& (tablesize - 1), because the table size is always a power of two.
(structs.c)
- Changed Macros ObjHash and ObjHaskStr to static INLINE functions.
(otable.c)
12-Sep 2009 (Fuchur)
- fix some refcounting issues (interpret.c)
08-Sep 2009 (Zesstra)
- Get permanently allocated memory in xml_pkg_strdup(), which is not
subject to the GC to prevent some nasty problems.
(pkg-xml2.c)
04-Sep-2009 (Zesstra)
- Fixed initialization of libxml2 (#671).
LIBXML_TEST_VERSION already allocates memory, so xmlMemSetup() has to be
called before that macro. Otherwise crashes may occur.
(pkg-xml2.c)
- Use the 'permanent' variants of our allocation function, because the
memory used by libxml2 should not be subject to the garbage collector.
(pkg-xml2.c, pkg-iksemel.c)
02-Sep-2009 (Gnomi)
- Fixed a crash in symbol_function with very long function names
by removing the necessity of an alloca and giving make_shared_identifier
the length of the identifier as an additional parameter.
(lex.c, prolang.y)
- Added a sefun:: specifier to explicitly call simul efuns. (#669)
(lex.c, prolang.y)
03-Aug-2009 (Gnomi)
- Memory corruption when using protected string ranges.
(interpret.c)
20-Jul-2009 (Gnomi)
- Set a maximum number of retries for reading data (in case the
underlying functions go crazy and cause an endless loop).
(pkg-gnutls.c, pkg-openssl.c)
13-Jul-2009 (Fuchur)
- correct strict aliasing problem in byte code accessor functions.
also generate the accessor functions using a script.
(bytecode.h, mk_bytecode_gen.sh)
23-Jun-2009 (Gnomi)
- Corrected a memory leak in send_udp.
(comm.c)
- String corruption by present_clone.
(efuns.c)
18-Jun-2009 (Zesstra)
- The data from the bytecode is not written/read byte per byte and
combined by shifting and masking anymore, but by reading the
specific type directly. This should not have endianness issues, as
long as compiled bytecode is not transferred to a different machine.
But Alignment issues may arise on some system.
- The bytecode starts using fixed-size integer types from C99.
- Entities in the bytecode are getting their semantic types (like
bc_offset_t).
- Macros in bytecode.h are replaced by static inline functions. In some
cases, the old macros are still there, but implemented by the new
functions.
- The *_LONG, *_INT32 and *_3BYTE and LOAD_INT16 macros are rarely used and
removed.
- added new types for offsets within the bytecode: bc_offset_t (uint32),
bc_shortoffset_t (uint16).
- replaced GET_3BYTE and PUT_3BYTE macros by calls to get_bc_offset(), because
these are actually offsets. Increases sizes of offsets by 1, but probably
increases speed as well.
- replaced anonymous int32 in compiler in interpreter by bc_offset_t.
- changed some hard-coded assumptions about sizes of datatypes by sizeof(type)
- replaced unsigned char by bytecode_t
- renamed ins_long() and upd_long() by ins_int32() and upd_in32() because
they store a (u)int32, not a long in the bytecode.
- get_short(), load_short(), get_long() and load_long() do return the
values, just like the other function for reading the bytecode. The
existing Macros (e.g. GET_SHORT) ensure compatibiliy with existing code
- Removed the _LONG macros and _long() functions from bytecode.h. They were
rarely used and replaced by fixed-sized types with specific semantic.
- Hashes are now available in 3 fixed sizes, all calculated by Bob Jenkins
hash function (for the moment).
(hash.c, hash.h)
- Changed code using hashes to use dedicated types instead of a mixture of
int/short/unsigned short.
(lex.c|h)
- T_FLOATSs consist now of int32_t as mantissa and int16_t as exponent.
18-Jun-2009 (Gnomi)
- Allow closures as actions. (Bug #243)
(actions.c)
16-Jun-2009 (Zesstra)
- Removed built-in PCRE package, because it was awfully out of date. Since
libpcre is installed on nearly every halfway POSIX compatible system, we
just link against the system libpcre. If there is none available, no PCREs
are available in the driver (#658).
(mregexp.c, pkg-pcre)
- Just require on existence of PCRE_EXTRA_MATCH_LIMIT_RECURSION in libpcre.
Whoever has an ancient libpcre in use without this, should update it.
(mregexp.c, pkg-pcre)
- Removed a bunch of checks and own fall-back implementations for
functions required by C89/90/99 or POSIX.1: memmove, memcpy, memcpy,
strchr, strrchr, strdup, strcspn, strtoul. We just require them.
Also removed checks for broken versions on ancient sytems and a rarely
used abstraction for memmove (move_memory).
(port.c, port.h, configure.in)
15-Jun-2009 (Fuchur)
- (parse.c) Fix off-by-one error in find_string(). It returned a wrong index.
07-Jun-2009 (Gnomi)
- Made break_sp an svalue_t* and break addresses have their own
type (T_BREAK_ADDR).
(svalue.h, interpret.c)
06-Jun-2009 (Zesstra)
- Changed some defines in interpret.c to static inline functions.
06-Jun-2009 (Gnomi)
- Made T_ERROR_HANDLER a standalone type (without T_LVALUE)
(svalue.h, interpret.c, and a lot of other files)
04-Jun-2009 (Zesstra)
- Converted defines in struct.h into static functions.
03-Jun-2009 (Zesstra
- We require C99 from now on. Remove checks and definitions for
C99-incompatible systems.
(port.h)
- Changed a bunch of counters to statcounter_t to stop them from overflowing
after a few weeks uptime.
(comm, interpret, mregex, mstrings, otable, simulate, swap)
- Removed the deprecated efun cat() (#637)
The efun cat can be easily and more flexibly replaced by an sefun.
(files.c)
01-Jun-2009 (Gnomi)
- Forked 3.5 off the 3.3 branch.
30-May-2009 (LDMud Team) (3.3.719)
- Created snapshot.
29-May-2009 (Gnomi)
- (call_out.c) Preserve the order of call_out()s.
- (mudlib/deprecated/hash.c) Added sefuns md5() and sha1().
- (configure) Added a bunch of quotation marks.
28-May-2009 (Zesstra)
- Added sefun cat(), updated documentation of cat().
To reduce the workload of our users we supply implementations of
deprecated and removed efuns. This time: the deprecated efun cat().
(mudlib/deprecated/*)
- Removed a configure check for ancient gcc on AIX.
- Added checks to configure for the volatile keyword and VLAs.
- Check the compiler for support of -fwrapv and enable if supported (enables
a fully defined overflow/wrap behaviour of signed integers (#635).
- Support for using mmap() to get memory from the system (slaballoc):
sbrk() and brk() are obsoleted and some systems (like Darwin) don't have a
working implementation anymore. If sbrk/brk() are not usable, but mmap()
is available, use mmap() for mapping anonymous memory which we then use.
If mmap() is not available, use the old fallback (system malloc()).
Changed some precompiler checks for SBRK_OK, which should be
REPLACE_MALLOC. (#640)
(slaballoc.c, xalloc.c, configure.in)
- Support for using mmap() to get memory from the system (smalloc). (#640)
(smalloc.c)
- Removed amalloc/afree(), MALLOC_ALIGN and MEM_ALIGN.
Our amalloc() had errors and never worked as intended. As the driver does
not need more alignment than guaranteed by the allocators, amalloc() was
removed (see commit log for details).
(xalloc.c, slabmalloc.c, smalloc.c, sysmalloc.c, xptmalloc.c)
27-May-2009 (Gnomi)
- (ed.c, comm.c) Put ed sessions into the input_to list of interactive
objects, so now they have a common noecho and prompt handling. (Bug #522)
- (call_out.c, backend.c) Corrected the timing of call_outs from inside
a heartbeat. (Bug #375)
- (comm.c) Allow sending \0 with binary_message(). (Bug #71)
- (comm.c) Enable IAC quoting by default, allow enabling '\0'
and disabling '\n' in connection charsets.
26-May-2009 (Fuchur)
- (ed.c) Fix bogus reference increment in clear_ed_buffer_refs()
26-May-2009 (Zesstra)
- (func_spec) Marked efun cat() as deprecated. (#637)
19-May-2009 (Gnomi)
- (prolang.y, interpret.c) Corrected the handling of implicit context
variables in nested inline closures and allowed the initializers
of explicit context variables to reference other explicit context
variables. (Bug #631)
- (main.c, comm.c) Set the close-on-exec-flag on open file descriptors,
so they are not passed to erq. (Bug #629)
- (pkg-tls.h, pkg-openssl.c, pkg-gnutls.c, main.c, configure)
Allow TLS to be deactivated per default or command line. (Bug #479)
18-May-2009 (Gnomi)
- (pkg-xml2.c, arraylist.c, configure) Added support for XML parsing
using libxml2. (Bug #538, thanks, Bardioc!)
- (interpret.c) Ignore any arguments passed to a variable closure
instead of throwing an error. (Bug #612)
12-May-2009 (Fuchur)
- (object.c) compile fix for !USE_NEW_INLINES
- (prolang.y) forbid accessing closure arguments from within the
closure's context.
- (prolang.y) Fix infinite loop when redefining a closure argument
in its closure's context.
11-May-2009 (Gnomi)
- (sprintf.c) Don't rely on overflow, as gcc optimizes away overflow checks.
10-May-2009 (Zesstra)
- (smalloc.c, slaballoc.) Replaced SINT by GRANULARITY
The define SINT was ill-named. All occurrences were renamed to GRANULARITY
which describes the semantics of the define much better and it is now
defined as being sizeof(word_t).
Additionally, MEM_ALIGN is now defined as being the same as GRANULARITY.
- (xalloc.c) Replaced define by enum.
The defines for the header fields of memory blocks were replaced by an enum.
Additionally a comment about word_t is added.
- (xalloc.c) Fixed syntactial errors in pre-compiler statements.
Because MEM_ALIGN is now a sizeof() expression, it can't be used in
conditional compilation. Replaced them by real if() (which are eliminated
by the compiler because their expression is constant).
- (object.c) Fixed buffer overflow in save_svalue() (#634)
save_svalue() used PRIx16 to print the exponent of a float. Unfortunately,
on some systems PRIx16 is %x, although int16_t is a short. This causes a
signed conversion (which keeps the value) and then 0xffffffff is written.
Even if the buffer is large enough, upon restore with SCNx16 (%hx) a wrong
value would be restored. *args*
Additionally all sprintf(), which write into number_buffer were replaced
by snprintf().
06-May-2009 (Zesstra)
- (hosts/) The hosts/ directory was removed.
Removed the whole hosts/ directory because it wasn't maintained for a long
time and most of the systems were anyway dead for a long time (#625).
This removed --enable-use-system-crypt as well (#624).
- Removed checks and special code for OS2 and __EMX__.
- Removed check for MSDOS.
- Removed checks and special code for __BEOS__.
- Removed checks and special code for AMIGA.
- Removed checks and work-arounds for very old gcc compilers (2.x, <3.2).
- Removed checks and special code for SunOS4 (The last release of SunOS4
was in 1994.)
- Removed checks and special code for Ultrix.
- Removed MSDOS filesystem semantics (Checks for MSDOS_FS and special
behaviour (e.g. \\ as path separator).
- (prolang.y) Another fix in insert_pop_value().
In case of F_NUMBER was the operation itself not taken into account.
Replaced hard-coded numbers by the appropriate sizeof() in all other cases
as well.
05-May-2009 (Zesstra)
- (prolang.y)
Fix inconsistent F_NUMBER generation (#628).
The compiler generates F_NUMBER at more than one places. ins_number()
only writes a int32 into the bytecode, all the other places write a p_int,
which interpret.c expects.
The patch adds ins_p_int(), upd_p_int() and read_p_int().
ins_number() now calls ins_p_int() upon generating the F_NUMBER instruction.
Additionally upon storing a number (L_NUMBER) and in the unary '-'
upd_p_int() is called instead of a direct memcpy(). (memcpy() is a bit
faster, but I think it is much more risky to forget a place to change...)
- (prolang.y) Fixed insert_pop_value().
insert_pop_value() removes the last value from the stack. If possible, it
patches the code to prevent that value from being computed at all (by
removing the last expression). Unfortunately the function assumed that all
operations have no data following in the bytecode. This patches changes it
and enabled optimization/removal of operations with data.
05-May-2009 (Gnomi)
- (lex.c, efuns.c) Improved numeric overflow detection. (Bug #630)
- (pkg-gnutls.c) Don't abort on EINTR or EWOULDBLOCK.
04-May-2009 (Zesstra)
- (efuns.c, efuns.h, func_spec, string_spec, doc/, mudlib/)
Added new efun: configure_driver() and documentation.
configure_driver() will configure variuous aspects of the driver at run-time.
The first settings available is now the soft and hard memory limits.
- (smalloc.c, slaballoc.c, sysmalloc.c, xptmalloc.c)
Added soft and hard memory limits in output of then 'malloc' command.
- (object.c)
Fix for float corruption in restore_svalue().
We use 32 bit mantissas and 16 bit exponents for our floats. Ensure to
write and read fixed-width types in save_svalue() and restore_svalue().
Fixes #627, where restore_svalue() interpreted the 16bit integer for the
exponent as 32bit integer, resulting in data corruption if the exponent
was negative.
- (svalue.h)
The defines READ_DOUBLE, SPLIT_DOUBLe and STORE_DOUBLE were exchanged
by static inline functions.
STORE_DOUBLE_USED is not needed anymore and defined empty.
Additionally, SPLIT_DOUBLE returns now the mantissa as p_int instead of long.
- (interpret.c)
The compiler stores float literals with PUT_INT32 and PUT_SHORT. Reading
them from the bytecode was done by memcpy(). Some conditional compilation
was required to read the correct datatypes. This patch implements an old
TODO and makes F_FLOAT use the LOAD_INT32 and LOAD_SHORT macros from
bytecode.h.
19-Apr-2009 (Gnomi)
- (pkg-tls.c) Set this_interactive() when executing the callback
after handshaking and print the prompt afterwards, so it looks the
same as a normal logon() call.
- (closure.c, interpret.c) New opcodes F_CALL_CLOSURE and F_POP_SECOND
for calling more complicated closures like lambda, inherited lfun
and context closures from within a lambda closure. (Bug #613)
16-Apr-2009 (Gnomi)
- (comm.c, interpret.c, doc/) Made the maximum write buffer size
configurable per interactive via a new efun configure_interactive.
New optional driver hook H_MSG_DISCARDED to inform the master about
discarded messages and send a custom error message to the interactive.
Already compressed packages wont be discarded (Bug #297).
15-Apr-2009 (Gnomi)
- (pkg-gnutls.c) Support for older versions of libgnutls.
- (port.h, object.c)
Savefiles are written in binary mode, if the host system supports any
such notion (O_BINARY exists). Additionally, they are read as binary
as well, if it is supported. (Note: POSIX conforming systems do not
distinguish between 'text' and 'binary' modes, this is only relevant
to Cygwin.)
14-Apr-2009 (Gnomi)
- (doc/driver/predefined) Corrected description of __PATH__(n).
- (mk-patchlevel.h) Call version.sh in the current directory.
- (interpret.c) The size of big switch structures was miscalculated
on LP64 platforms. (t-0000622.c)
12-Apr-2009 (Gnomi)
- (efuns.c, pkg-openssl.c, pkg-gcrypt.c) Moved hash() and hmac()
from pkg-openssl.c to efuns.c and implemented them also using
libgcrypt or the internal MD5 and SHA1 routines (bug #52).
- (efuns.c) fixed a memory leak in hash() and hmac().
- (efuns.c) hash() now costs 10 ticks per iteration.
- (efuns.c) sha1() calculated wrong hash values with multiple
interations.
- (doc/efun) Marked md5() and sha1() as obsoleted by hash().
- (pkg-openssl.c) Don't set a just queried client CA again. (Bug #583)
10-Apr-2009 (Gnomi)
- (pkg-gnutls.c) Implemented tls_refresh_certs and tls_check_certificate
with GnuTLS.
09-Apr-2009 (Gnomi)
- (interpret.c) Wrongly calculated the jump offset of the default
label in big switches due to a sign error (maybe #622).
- (exec.h) Another value for NAME_CROSS_DEFINED so that it doesn't
conflict with FUNSTART_MASK (large programs could hit that bit).
08-Apr-2009 (Gnomi)
- (pkg-tls.c) Set command_giver when executing the callback
after handshaking (Bug #499).
07-Apr-2009 (Gnomi)
- (pkg-tls.h) Corrected the definition of tls_check_certificate.
- (pkg-gnutls.h, pkg-openssl.h) Forgot an include.
- (main.c) Removed a superfluous pointer dereference.
21-Mar 2009 (Gnomi)
- (pkg-tls.c, pkg-openssl.c, pkg-gnutls.c) Separated code for GnuTLS
and OpenSSL.
15-Mar-2009 (Fuchur)
- (test/inc/deep_eq.inc)
Implement deep equality for the testsuite.
- (test/t-efuns.c)
Add a few tests for map().
- (array.c, strfuns.c, structs.c, efuns.c, doc/efun[.de]/map[.de])
Implement map(*, mapping, idx). (#367)
12-Mar 2009 (Zesstra)
- (slaballoc.c, smalloc.c)
Fixed a bug in esbrk() during memory allocation, where SINT
(sizeof(word_t)) was not taken into account in the calculation of a block
size, leading to crashes afterwards. (#611)
- (efuns.c)
Fixed an off-by-one buffer overflow in v_sha1(). Actually removed the \0
written after the buffer, because it was not needed.
10-Mar 2009 (Zesstra)
- (pkg-idna.c)
Fixed the evaluation of the arguments of f_idna_stringprop() and removed a
memory leak, because the argument string was not free'd. Additionally
avoided to put a return value on the stack in case of an error (#498)
03-Mar-2009 (Zesstra)
- (actions.c, configure.in, config.h.in, lex.c)
Made the maximum length of commands configurable.
COMMAND_FOR_OBJECT_BUFSIZE was renamed to MAX_COMMAND_LENGTH and
made configurable at compile time via the --max-command-length,
defaulting to 1000.
Added a permanent define __MAX_COMMAND_LENGTH__
28-Feb-2009 (Zesstra)
- (xalloc.c|h, smalloc.c, main.c, lex.c, slaballoc.c, backend.c,
string_spec, mudlib/sys/rtlimits.h, src/settings*, doc/master/)
Renamed --max-malloced to --hard-malloc-limit and MAX_MALLOCED to
HARD_MALLOC_LIMIT_DEFAULT and changed the mud configurations.
Introduced a --soft-malloc-limit/SOFT_MALLOC_LIMIT_DEFAULT
Added set_* and get_memory_limit() and related constants for managing the
memory limits
Added check_for_soft_malloc_limit() to check the soft memory limit
Added notify_lowmemory_condition() to call low_memory() in the mudlib master
Added calls to notify_lowmemory_condition() and
check_for_soft_malloc_limit() in the ba ckend cycle
Added documentation for new memory limit and low_memory().
27-Feb-2009 (Fuchur)
- (settings/default)
Sync options with configure.
- (autoconf/configure.in)
Don't replace unspecified defaults by 'no' anymore.
Fix some quoting issues.
Add help messages for all custom options.
Remove a few unused options.
15-Feb-2009 (Zesstra)
- (port.c)
Check results of gmtime() and localtime() and return NULL, if NULL is
returned.
- (efuns.c)
Check results of gmtime(), localtime(), time_fstring() and utime_string()
for being NULL and raise a runtime error. (#587)
- (test/inc/testarry.inc, test/t-mantis.c)
Added tests for the efuns affected by bug #587.
Added an test flag TF_DONTCHECKERROR for tests which must not crash the
driver but may cause a runtime error or not.
31-Jan-2009 (Fuchur)
- (test/run.sh, test/t-0000604.sh)
Add Test for #604
31-Jan-2009 (Zesstra)
- Fixed german manpage for unique_array() which contained german and english.
30-Jan-2009 (Fuchur)
- (main.c)
Fix bug building erq_args, which could cause memory corruption. (#604)
29-Jan-2009 (Gnomi)
- (access_check.c, comm.c, main.c)
Made access control a runtime option.
28-Jan-2009 (Gnomi)
- (backend.c)
!-escaped commands are treated specially even
if the player object doesn't have an environment.
- (comm.c)
Correctly detect if input_to() was called more than once
in the same execution thread (Bug #535).
27-Jan-2009 (Gnomi)
- (xalloc.c)
realloc() should also consider the xalloc overhead, when
assessing the available space.
- (main.c)
Corrected --longhelp output of TLS options.
- (comm.c, configure)
Removed support for write threads.
18-Jan-2009 (Zesstra)
- (pkg-mysql.c)
Fixed corrupted results of db_conv_string(). (#602).
17-Jan-2009 (Zesstra)
- (efuns.c)
Relaxed syntax check in v_trim() to allow a 0 as <ch> for trimming
"\0" (#473)
17-Jan-2009 (Fuchur)
- (efuns.c, func_spec, mudlib/sys/debug_info.h, doc/efun/debug_info,
doc/efun.de/debug_info.de)
use debug_info instead of new get_eval_number() efun.
- (efuns.c, func_spec, interpret.c, interpret.h, doc/efuns/get_eval_number,
doc/efuns.de/get_eval_number.de)
add get_eval_number efun.
- (backend.c, comm.c, interpret.c, object.c)
call mark_(start|end)_evaluation() in various places (#476)
- (prolang.y)
check return value of verify_declared() - fixes a crash in t-language
17-Jan-2009 (Gnomi)
- (object.c)
Save_object without a filename removed one too many elements
from the stack. (Bug #595)
16-Jan-2009 (Zesstra)
- (config.h.in, lex.c)
Enforce the possible value range for ITABLE_SIZE (256 - SHRT_MAX/32768).
Fixes issues of not finding identifiers in the table if the table is to
large. (#558)
Updated documentation in config.h.in to reflect this.
Corrected the manpages for read_file(). (#592)
14-Jan-2009 (Gnomi)
- (comm.c, pkg-mccp.c, configure)
Use of write buffers without the need for threads.
- (object.c)
Made restore_value reentrant. (Bug #548)
- (prolang.y)
Removed useless code.
14-Jan-2009 (Zesstra)
- (doc/driver/limitations)
Started to assemble a list of non-configurable limits - to be extended...
- (exec.h, object.c, closure.c, interpret.c)
Changed some code defines from exec.h to static functions and
constants to an enum.
Introducing a properly typed CROSSDEF_NAME_OFFSET() solves crash on LP64
platforms in functionlist(). (#559)
Renamed SEARCH_FUNCTION_INHERIT to search_function_inherit and return the
pointer to the inherit structure.
- (smalloc.c)
Fixed some warnings about wrong format specifiers reported by Bardioc.
13-Jan-2009 (Zesstra)
- (simulate.c)
Reallowed empty object names (/.c) (#525)
12-Jan-2009 (Lars Duening) (3.3.718)
- Created snapshot.
06 Jan 2009 (Fuchur)
- (util/xerq/erq.c, util/xerq/defs.h)
Remove dependency on the driver's random number generator - the
libc one should serve us just fine.
04-Jan 2009 (Zesstra)
- (interpret.c, interpret.h)
Changed ASSIGN_EVAL_COST to a static inline function assign_eval_cost_inl()
and use it consistently in interpret.c.
Changed MAX_SHIFT to a static const.
- (mstrings.h, mstrings.c, strfuns.c)
Changed some code defines to static inline functions.
Renamed the variables mstr_tabled and mstr_untabled to mstr_tabled_count
and mstr_untabled_count. (They had the same name as the old defines which
are now functions).
Removed unused and now superfluous ref_mstring_safe, mstring_ref(),
deref_mstring_safe, mstring_deref(), because ref_mstring() and
deref_mstring() can now handle arguments with side-effects.
Added some casts to remove the const from const arguments when passing them
off to get_txt(). (Don't worry, it is only cosmetic and temporary.)
- (random.h, random.c, main.c, autoconf/configure.in, config.h.in, efuns.c,
random/*)
Exchanged the Mersenne Twister (pseudo random number generator) by the
SIMD-oriented Fast Mersenne Twister (SFMT) to support random numbers up
to 2^63-1 on 64 bit platforms:
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/
Additionally, the period length can be configured now. The SFMT
faciliates a better equidistribution and a faster recovery from a
0-excess state as well. (Bug #527)
Added the possibility to seed the PRNG from arbitrary files or devices by
using the commandline option --randomdevice. The default device is
/dev/urandom. If that is not readable, the driver falls back to seed the
PRNG with the system time.
03-Jan 2009 (Zesstra)
- (efuns.c, efuns.h, func_spec)
Extended present_clone() to optionally search for the <n>th object in the
environment.
- (port.h)
Cleaned up handling of gcc attributes (Assumption: gcc < 3 are out of use
now), added __attribute__ define which evaluates to nothing if gcc is
not used.
- (make_func.y)
Added NORETURN attribute to yyerror() and fatal()
Changed fatal() from int to void.
- (closure.c, interpret.c, simulate.h )
Added NORETURN attribute to lambda_cerror(), lambda_cerrorl(),
stack_overflow(), throw_error(),
- (port.h, main.h, comm.c, strfuns.h, closure.c)
Added the format attributes to: time_fstring(), strbuf_addf(),
vdebug_message(), comm_fatal(), lambda_cerror(), lambda_cerrorl()
- (xalloc.h)
Added the warn_unused_result attribute to xalloc_traced(),
rexalloc_traced(), pxalloc_traced(), prexalloc_traced().
- (mregex.c, mstrings.c, simulate.c)
Fixed some wrong format specifiers which gcc found after using the format
attribute on strbuf_addf().
30-Dec 2008 (Zesstra)
- (array.h, comm.c, smalloc.c, slaballoc.c, xptmalloc.c, xalloc.c,
sprintf.c)
Changed some code defines and pre-compiler constants to static inline
functions and enums (partially from Largo, thanks!)
26-Dec 2008 (Zesstra)
- (object.c)
Fixes a forgotten increment of a ref count in f_rename_object().
24-Dec 2008 (Gnomi)
- (ed.c)
The reference count of the filename and the exit function
wasn't cleared in a GC. (Bug #398)
- (prolang.y)
Switch now explicitly expects case/default statements in the switch
block and puts the non-case statements afterwards into their own
block scope. (Bug #584)
15-Dec 2008 (Zesstra)
- (object.c)
Fixed potential crashes in rename_object() and replace_program() due to
stack overflows. (Bug #581)
14-Dec 2008 (Gnomi)
- (src/interpret.c, src/autoconf/*)
Added option to show the evaluation costs in the stacktrace.
- (src/pkg-iksemel.c, many files)
Added support for XML parsing with iksemel. (Bug #538, thanks, Bardioc!)
(Zesstra)
- (efuns.c)
Fixed potential crashes due to stack overflows in process_string(),
regexplode(), regexp() and present_clone(). (Bug #578)
- (interpret.h, interpret.c, efuns.c, mudlib/sys/debug_info.h,
doc/efun/debug_info, doc/efuns.de/debug_info.de)
Added control_stack_depth() to determine the number of frames on the
control stack and added flag DIT_CURRENT_DEPTH to
debug_info(DINFO_TRACE,...).
- (interpret.c)
Replaced call to exit() by a call to fatal() in asster_master_ob_loaded()
to allow core dumpes to be written in cases when the master object could
not be loaded and there is no destructed master as well. (Bug #570).
- (simulate.c)
Fixed potential crash due to stack overflow in load_object(). (Bug #580).
13-Dec 2008 (Zesstra)
- (pkg-mysql.c)
Allocate temporary memory for the temporary string in f_db_conv_string()
on the heap, because the string is user supplied and calling the
function with a large string may cause a crash due to stack overflow.
(Bug #582)
- (efuns.c, strfuns.c)
Corrected format specifiers in errorf() calls.
12-Dec 2008 (Zesstra)
- (port.h, port.c, efuns.h, efuns.c, func_spec, gcollect.c)
added mkime(), an efun which converts a date/time information as
returned by local_time() to a unix timestamp (integer value).
added strftime(), an efun which converts a timestamp to a formatted
string using a format string with a variety of format specifiers.
changed caching behavious for ctime(): cache is now in the efun, not in
port.c which spares the driver to search for the shared string and
saves about 85% of execution time in case of cache hits. Removed
caching in case of millisecond precision as cache hits are rather
unlikely.
Added handlers for the garbage collection which take care of the cache
for ctime().
- (main.c)
use also locale defined in LC_TIME.
04-Oct 2008 (Zesstra)
- (object.c)
Allocate memory for the filename in f_save_object() and f_restore_object()
on the heap instead of the stack. Use the generic error handler in
save_object() and the already existing one in restore_object() to free the
buffer in case of errors. Minor changes in error handling in
f_restore_object() by pushing the handler earlier onto the stack and using
it more often. Fixes crash with large filenames. (Bug #576)
- (comm.c)
Allocate memory for temporary buffers in send_erq() and send_udp() on the
heap and not on the stack. Fixes crashes with large arguments. (Bug #577)
26-Sep 2008 (Zesstra)
- (interpret.c, interpret.h)
Changed return type of push_error_handler() to svalue_t *.
Added a simple generic error handler structure for holding a single
buffer, an error handling function for freeing the buffer and a function
for allocating memory on the heap and simultaneously pushing the
corresponding error handler onto the value stack.
- (efuns.c)
removed unneeded cast.
- (efuns.c, pkg-sqlite.c)
Used new return value of push_error_handler().
- (backend.c)
added missing initializers to some statistic_t variables.
- (strfuns.c)
x_filter_string():
Removed crash in efun filter() due to stack overflow in case of very
large strings. (Bug #575)
Don't return a 0 as result if memory for the result could not be
allocated due to an out-of-memory condition.
21-Sep 2008 (Zesstra)
- (actions.c)
f_execute_command(): added length of command to error message 'command too
long'
Corrected format specifiers
- (comm.c)
Corrected format specifiers
interactive_cleanup(): removed variable e
add_message(): fixed a potential crash due to a buffer overflow on the
stack using vsnprint() instead of vsprintf() (and spared the client a
comm_fatal()).
f_binary_message(): replaced a fatal() by an errorf() if a string could
not be allocated. Replaced the error message text as well, because that
is not a stack overflow (memory for the string is allocated on heap).
- (xalloc.h)
Corrected format specifiers.
- (object.c)
Corrected format specifiers, removed unneeded casts.
free_prog(): added refcount, program address and program name to message
for fatal() in case of negativ refcounts
v_function_exists(): changed flags to p_int.
save_array(), register_array(), register_mapping_filter(): changed i to
p_int
restore_svalue(): removed variable tmp while restoring a float.
- (efuns.c, mapping.c, prolang.y, simulate.c, structs.c, object.c, dumpstat.c)
Corrected format specifiers
- (interpret.c, heartbeat.c, simulate.c, call_out.c, comm.c, actions.c,
backend.c)
secure_call_lambda(), apply_master_ob(), secure_apply_ob(),
push_error_context(), errorf(), call_heart_beat(), call_out(),
replace_program_lambda_adjust(), call_function_interactive(),
execute_command(), process_objects():
take the address for rt_context from the rt member of the struct
error_recovery_info, not from the beginning of the struct. Removes
compiler warning "dereferencing type-punned pointer will break
strict-aliasing rules".
- (structs.c)
struct_t_unique_name(): sprintf -> snprintf