Files @ r15899:3bbe04d427d2
Branch filter:

Location: cpp/openttd-patchpack/source/os/debian/openttd-wrapper

rubidium
(svn r20593) -Fix: (rlongago, r20547): long ago the service interval was int16, after which is got converted to Date except in the order backup. Much later I copied the savegame snippets from a vehicle and applied that on the order backup. Presto, reading/writing 32 bits (of Date) into 16 bits of ancient style service interval. That would then "spoil" the name pointer and that eventually crashes OpenTTD as it's likely to be an invalid pointer.
#!/bin/sh
# This is a wrapper script that checks openttd's exit status and
# displays its stderr output

# Get a file to capture stderr to. Use the deprecated -t option, so this
# works on the old mktemp from the mktemp package (which has been
# replaced by the version from the coreutils package).
TMPFILE=`mktemp -t openttd.errout.XXXXXXXXX`

if [ ! -w "$TMPFILE" ]; then
	xmessage "Could not create temporary file for error messages. Not starting OpenTTD."
	exit 1;
fi

# Capture stderr
openttd "$@" 2> "$TMPFILE"
ERRCODE=$?
if [ "$ERRCODE" -ne 0 ]; then
	CODEMSG="OpenTTD returned with error code $ERRCODE."
	if [ -s "$TMPFILE" ]; then
		MESSAGE="$CODEMSG The following error messages were produced:\n\n"
		printf "$MESSAGE" | cat - "$TMPFILE" | fold -s | xmessage -file -
	else
		xmessage "$CODEMSG No error messages were produced."
	fi
fi

rm -f "$TMPFILE"