numerical result out of range

Discussion in 'C Programming' started by Maximilian, Feb 1, 2009.

  1. Maximilian

    Maximilian Guest

    Hello group!

    I write adventure game in language C and when I want to format
    date, it is "Numerical result out of range".

    For example

    #include <stdio.h>
    #include <time.h>
    #include <errno.h>
    #include <string.h>

    int main(void)
    {
    struct tm tm = { 0 };
    char *s;
    int e;

    errno = 0;
    s = asctime(&tm);
    e = errno;
    printf("s: %s\n", s);
    printf("errno: %i (%s)\n", e, strerror(e));

    return 0;
    }

    When I run this, output is

    s: (null)
    errno: 34 (Numerical result out of range)

    What is wrong?

    What is numerical result?

    I use lcc-win32 compiler.

    Greetings, Maximilian
     
    Maximilian, Feb 1, 2009
    #1
    1. Advertising

  2. Maximilian

    Lew Pitcher Guest

    On February 1, 2009 18:59, in comp.lang.c, Maximilian ()
    wrote:

    >
    > Hello group!
    >
    > I write adventure game in language C and when I want to format
    > date, it is "Numerical result out of range".
    >
    > For example
    >
    > #include <stdio.h>
    > #include <time.h>
    > #include <errno.h>
    > #include <string.h>
    >
    > int main(void)
    > {
    > struct tm tm = { 0 };
    > char *s;
    > int e;
    >
    > errno = 0;
    > s = asctime(&tm);
    > e = errno;
    > printf("s: %s\n", s);
    > printf("errno: %i (%s)\n", e, strerror(e));
    >
    > return 0;
    > }
    >
    > When I run this, output is
    >
    > s: (null)
    > errno: 34 (Numerical result out of range)
    >
    > What is wrong?


    Well, AFAICT, you didn't initialize the tm structure properly.

    Your initialization set tm_mday to 0 (it should be between 1 and 31
    inclusive), and left a number of the rest of the structure members set to
    inconsistant values.

    > What is numerical result?


    Jacob should be able to answer why asctime() uses that specific error code.

    > I use lcc-win32 compiler.
    >
    > Greetings, Maximilian
    >


    --
    Lew Pitcher

    Master Codewright & JOAT-in-training | Registered Linux User #112576
    http://pitcher.digitalfreehold.ca/ | GPG public key available by request
    ---------- Slackware - Because I know what I'm doing. ------
     
    Lew Pitcher, Feb 2, 2009
    #2
    1. Advertising

  3. Maximilian

    Ian Collins Guest

    Maximilian wrote:
    > Hello group!
    >
    > I write adventure game in language C and when I want to format
    > date, it is "Numerical result out of range".
    >
    > For example
    >
    > #include <stdio.h>
    > #include <time.h>
    > #include <errno.h>
    > #include <string.h>
    >
    > int main(void)
    > {
    > struct tm tm = { 0 };


    Check the specification for struct tm (hint - what's the range for tm_mday).

    --
    Ian Collins
     
    Ian Collins, Feb 2, 2009
    #3
  4. Maximilian

    Ian Collins Guest

    Ian Collins wrote:
    > Maximilian wrote:
    >> Hello group!
    >>
    >> I write adventure game in language C and when I want to format date,
    >> it is "Numerical result out of range".
    >>
    >> For example
    >>
    >> #include <stdio.h>
    >> #include <time.h>
    >> #include <errno.h>
    >> #include <string.h>
    >>
    >> int main(void)
    >> {
    >> struct tm tm = { 0 };

    >
    > Check the specification for struct tm (hint - what's the range for
    > tm_mday).
    >

    Following on, you said:

    > errno = 0;
    > s = asctime(&tm);
    > e = errno;
    > printf("s: %s\n", s);
    > printf("errno: %i (%s)\n", e, strerror(e));
    >
    > return 0;
    > }
    > > When I run this, output is

    >
    > s: (null)
    > errno: 34 (Numerical result out of range)
    >
    > What is wrong?


    I think this violates the requirements for asctime. The standard
    defines the algorithm and it does not check for valid month days, so the
    conforming output should be

    s: Sun Jan 0 00:00:00 1900

    I assume you didn't invoke the compiler in conforming mode.

    --
    Ian Collins
     
    Ian Collins, Feb 2, 2009
    #4
  5. Maximilian <> writes:
    > I write adventure game in language C and when I want to format
    > date, it is "Numerical result out of range".
    >
    > For example
    >
    > #include <stdio.h>
    > #include <time.h>
    > #include <errno.h>
    > #include <string.h>
    >
    > int main(void)
    > {
    > struct tm tm = { 0 };
    > char *s;
    > int e;
    >
    > errno = 0;
    > s = asctime(&tm);
    > e = errno;
    > printf("s: %s\n", s);
    > printf("errno: %i (%s)\n", e, strerror(e));
    >
    > return 0;
    > }
    >
    > When I run this, output is
    >
    > s: (null)
    > errno: 34 (Numerical result out of range)

    [...]

    Since lcc-win is developed by jacob navia, who has been involved in
    some rather heated discussions here about the behavior of asctime() in
    corner cases, including the particular case you use in your program, I
    have to wonder whether this is a serious question.

    If you seriously want to format dates, you should probably use
    strftime() rather than asctime(). If you really want to use
    asctime(), you should limit its arguments to reasonable values.

    (I know what the standard says about how your program should behave.
    If you really want to know, I'll be glad to explain it. If you don't
    post a followup, I'll assume you don't.)

    --
    Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
    Nokia
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
     
    Keith Thompson, Feb 2, 2009
    #5
  6. Maximilian

    Maximilian Guest

    On Sun, 01 Feb 2009 17:51:26 -0800, Keith Thompson <> wrote:

    >Maximilian <> writes:
    >> I write adventure game in language C and when I want to format
    >> date, it is "Numerical result out of range".
    >>
    >> For example
    >>
    >> #include <stdio.h>
    >> #include <time.h>
    >> #include <errno.h>
    >> #include <string.h>
    >>
    >> int main(void)
    >> {
    >> struct tm tm = { 0 };
    >> char *s;
    >> int e;
    >>
    >> errno = 0;
    >> s = asctime(&tm);
    >> e = errno;
    >> printf("s: %s\n", s);
    >> printf("errno: %i (%s)\n", e, strerror(e));
    >>
    >> return 0;
    >> }
    >>
    >> When I run this, output is
    >>
    >> s: (null)
    >> errno: 34 (Numerical result out of range)

    >[...]


    Hello, Keith Thompson!

    >Since lcc-win is developed by jacob navia, who has been involved in
    >some rather heated discussions here about the behavior of asctime() in
    >corner cases, including the particular case you use in your program, I
    >have to wonder whether this is a serious question.


    That is very mysterious. I searched comp.lang.c in google and
    found nothing. I thought lcc-win32 uses msvcrt.dll.

    >If you seriously want to format dates, you should probably use
    >strftime() rather than asctime(). If you really want to use
    >asctime(), you should limit its arguments to reasonable values.


    That program (tm_mday=0) is only example. asctime() also returns NULL
    if tm_mday is > 31, but not if date is for example February 31.

    What I wonder is why I can not format "alien" dates with asctime(). In
    my game all months have 32 days (because it's power of 2). Can strftime()
    format months with 32 days, everywhere? What means "Numerical result" in
    context of asctime()?

    >(I know what the standard says about how your program should behave.
    >If you really want to know, I'll be glad to explain it. If you don't
    >post a followup, I'll assume you don't.)


    Yes please, I want to know!

    Greetings, Maximilian
     
    Maximilian, Feb 2, 2009
    #6
  7. Maximilian <> writes:
    > On Sun, 01 Feb 2009 17:51:26 -0800, Keith Thompson <> wrote:
    >>Maximilian <> writes:
    >>> I write adventure game in language C and when I want to format
    >>> date, it is "Numerical result out of range".
    >>>
    >>> For example

    [snip]
    >>> s: (null)
    >>> errno: 34 (Numerical result out of range)

    >>[...]

    >
    > Hello, Keith Thompson!
    >
    >>Since lcc-win is developed by jacob navia, who has been involved in
    >>some rather heated discussions here about the behavior of asctime() in
    >>corner cases, including the particular case you use in your program, I
    >>have to wonder whether this is a serious question.

    >
    > That is very mysterious. I searched comp.lang.c in google and
    > found nothing. I thought lcc-win32 uses msvcrt.dll.


    I believe lcc-win32 uses its own runtime library. I don't know
    whether it also uses msvcrt.dll, but jacob has said here that lcc-win
    has its own implementation of astime(). If you're curious, you can
    ask in comp.compilers.lcc.

    >>If you seriously want to format dates, you should probably use
    >>strftime() rather than asctime(). If you really want to use
    >>asctime(), you should limit its arguments to reasonable values.

    >
    > That program (tm_mday=0) is only example. asctime() also returns NULL
    > if tm_mday is > 31, but not if date is for example February 31.
    >
    > What I wonder is why I can not format "alien" dates with asctime(). In
    > my game all months have 32 days (because it's power of 2). Can strftime()
    > format months with 32 days, everywhere? What means "Numerical result" in
    > context of asctime()?


    It seems fairly obvious that the numeric result you're giving it for
    the day of the month is outside its range of 1..31. Whether the
    implementation is allowed to reject such a value is another question.

    >>(I know what the standard says about how your program should behave.
    >>If you really want to know, I'll be glad to explain it. If you don't
    >>post a followup, I'll assume you don't.)

    >
    > Yes please, I want to know!


    Ok. You can get a copy of a recent draft of the standard at
    <http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf>; asctime()
    is described in 7.23.3.1. The definition hasn't changed significantly
    since the 1989 ANSI C standard.

    The behavior of asctime is defined, not in terms of hours, minutes,
    seconds, and so forth, but by a specific algorithm, presented in C
    code, to which it must be equivalent. An implementation that uses
    that algorithm, or an equivalent one, will produce certain
    well-defined results for certain input values -- even if those input
    values are not sensible. For example, the day of the month is
    formated with "%3d", which means that any value for mday in the range -99 to
    +999 will fit in that 3-character field; longer values may cause a buffer
    overrun *unless* the year, which is printed with "%d" takes up fewer
    spaces.

    jacob has rather strongly expressed the opinion that the input values
    are required to be within the "normal ranges" defined in 7.23.1 (a
    section that doesn't mention asctime), and that an implementation is
    therefore free to behave differently (say, by returning NULL and
    setting errno) if, for example, you give it a tm_mon value of 0, even
    though the presented algorithm has well-defined behavior in that case.

    (We've had several lengthy and unpleasant flame wars on that topic,
    both here and in comp.std.c. You can understand my suspicion when
    someone brings up an unusual example, using jacob's compiler, that
    illustrates the very point that has been disputed. If someone wanted
    to resurrect that old flame war, just for the fun of watching people
    argue about it all over again, your original article might be an
    effective way to do it. We do have people here who deliberately
    disrupt this newsgroup. I hope that's not what you're doing. Search
    for "asctime" in this newsgroups archives.)

    So, having said all that, and assuming you're really interested in a
    solution to your stated problem, my recommendation is *not* to use
    asctime(). Setting aside the debates about how asctime() is required
    to behave, it's primarily intended to handle dates that are valid in
    the real-world Gregorian calendar. And it produces a rigid and
    somewhat obsolete format. It automatically ends the string with a
    new-line, it ignores localization, always using English abbreviations
    for weekdays and months, and it uses an inconvenient ordering.

    If you want to format alien dates, such as February 31 or January 0,
    just format them yourself using sprintf(). (strftime() won't work for
    your purposes; the result when any input values are outside their
    "normal ranges" is unspecified.)

    --
    Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
    Nokia
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
     
    Keith Thompson, Feb 2, 2009
    #7
  8. Maximilian

    jacob navia Guest

    Maximilian wrote:

    Hello Maximilian

    Maybe you can help me out?

    When I run this program under "Microsoft Visual C" 64 bits I get a
    dialog box

    "Test.exe has stopped working"

    Below it is written

    "Windows is searching for a solution to this problem"

    Why is this so?

    Here is my program:

    d:\lcc\test>type numresult.c
    #include <stdio.h>
    #include <time.h>
    #include <errno.h>
    #include <string.h>

    int main(void)
    {
    struct tm tm = { 0 };
    char *s;
    int e;

    errno = 0;
    s = asctime(&tm);
    e = errno;
    printf("s: %s\n", s);
    printf("errno: %i (%s)\n", e, strerror(e));

    return 0;
    }

    Greetings

    Jacob



    --
    jacob navia
    jacob at jacob point remcomp point fr
    logiciels/informatique
    http://www.cs.virginia.edu/~lcc-win32
     
    jacob navia, Feb 2, 2009
    #8
  9. Maximilian

    Guest

    On 2 Feb, 05:22, Richard Heathfield <> wrote:
    > Lew Pitcher said:
    > > On February 1, 2009 18:59, in comp.lang.c, Maximilian
    > > () wrote:


    > >>   struct tm tm = { 0 };

    >
    > > Well, AFAICT, you didn't initialize the tm structure properly.

    >
    > > Your initialization set tm_mday to 0 (it should be between 1 and
    > > 31 inclusive), and left a number of the rest of the structure
    > > members set to inconsistant values.

    >
    > No, it set the rest of the structure members to 0.


    ie. to values inconsistant with the struct tm field values

    > The OP needs to look up time(), localtime(), and strftime(). The
    > asctime() function is a dead end.


    --
    Nick Keighley
     
    , Feb 2, 2009
    #9
  10. writes:
    > On 2 Feb, 05:22, Richard Heathfield <> wrote:
    >> Lew Pitcher said:
    >> > On February 1, 2009 18:59, in comp.lang.c, Maximilian
    >> > () wrote:

    >
    >> >>   struct tm tm = { 0 };

    >>
    >> > Well, AFAICT, you didn't initialize the tm structure properly.

    >>
    >> > Your initialization set tm_mday to 0 (it should be between 1 and
    >> > 31 inclusive), and left a number of the rest of the structure
    >> > members set to inconsistant values.

    >>
    >> No, it set the rest of the structure members to 0.

    >
    > ie. to values inconsistant with the struct tm field values


    No, tm_mday is the only required member of struct tm for which 0 is
    outside the "normal range".

    >> The OP needs to look up time(), localtime(), and strftime(). The
    >> asctime() function is a dead end.


    For his stated purposes, so are time(), localtime(), and strftime().

    --
    Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
    Nokia
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
     
    Keith Thompson, Feb 2, 2009
    #10
  11. Maximilian

    Lew Pitcher Guest

    On February 2, 2009 00:22, in comp.lang.c, Richard Heathfield
    () wrote:

    > Lew Pitcher said:
    >
    >> On February 1, 2009 18:59, in comp.lang.c, Maximilian
    >> () wrote:
    >>

    > <snip>
    >
    >>> struct tm tm = { 0 };

    >
    > <snip>
    >
    >> Well, AFAICT, you didn't initialize the tm structure properly.
    >>
    >> Your initialization set tm_mday to 0 (it should be between 1 and
    >> 31 inclusive), and left a number of the rest of the structure
    >> members set to inconsistant values.

    >
    > No, it set the rest of the structure members to 0.


    which are values that are (or may be) inconsistant with each other.
    For instance
    - tm_wday will be 0, indicating that the selected date was a Sunday. Was
    Jan 0, 1900 a Sunday?
    - tm_yday will be 0, indicating that the selected date was 0 days since
    January 1. Was January 0, 1900 zero days after January 1, 1900?
    - tm_isdst will be 0, indicating that daylight-savings time was not in
    effect. Was DST in effect on January 0, 1900?

    > The OP needs to look up time(), localtime(), and strftime(). The
    > asctime() function is a dead end.


    Agreed, wrt the "real" calendar.
    However, since the OP has since indicated that he is not working with
    a "real" calendar (he has written his own, in which all months have 32
    days), none of the C standard time and date functions will suffice for his
    purposes.

    --
    Lew Pitcher

    Master Codewright & JOAT-in-training | Registered Linux User #112576
    http://pitcher.digitalfreehold.ca/ | GPG public key available by request
    ---------- Slackware - Because I know what I'm doing. ------
     
    Lew Pitcher, Feb 2, 2009
    #11
  12. Lew Pitcher <> writes:
    [...]
    > However, since the OP has since indicated that he is not working with
    > a "real" calendar (he has written his own, in which all months have 32
    > days), none of the C standard time and date functions will suffice for his
    > purposes.


    In some cases, this is because the C standard functions aren't defined
    to work values outside their "normal" ranges. In other cases, it's
    because some vendors have chosen to give enforcement of "reasonable"
    arguments a higher priority than strict conformance to the standard.

    --
    Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
    Nokia
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
     
    Keith Thompson, Feb 2, 2009
    #12
  13. Maximilian

    Maximilian Guest

    On Mon, 02 Feb 2009 10:39:24 +0100, jacob navia <> wrote:

    >Maximilian wrote:
    >
    >Hello Maximilian
    >
    >Maybe you can help me out?
    >
    >When I run this program under "Microsoft Visual C" 64 bits I get a
    >dialog box
    >
    >"Test.exe has stopped working"
    >
    >Below it is written
    >
    >"Windows is searching for a solution to this problem"


    (Did it find one?)


    >Why is this so?


    I don't know. Can MS asctime() return NULL, as well? I think "%s"
    format specifier need not accept NULL pointer, but is common extension.

    I'm more worried that asctime() returns NULL at all. I always looked
    at it as simple formatter for struct tm, and as long as weekday and month
    are in range, and as long as result string is not too long, I assumed it
    would not try to look at values and simply use them as is.

    Oddly, it seems February 31 is accepted but January 32 is not.

    What about metric time?

    >Here is my program:
    >
    >d:\lcc\test>type numresult.c
    >#include <stdio.h>
    >#include <time.h>
    >#include <errno.h>
    >#include <string.h>
    >
    >int main(void)
    >{
    > struct tm tm = { 0 };
    > char *s;
    > int e;
    >
    > errno = 0;
    > s = asctime(&tm);
    > e = errno;
    > printf("s: %s\n", s);


    Perhaps

    printf("s: %s", s ? s : "NULL\n");

    is is better protection. My excuse is, I have never seen asctime()
    return NULL pointer before.

    > printf("errno: %i (%s)\n", e, strerror(e));
    >
    > return 0;
    >}


    Greetings, Maximilian
     
    Maximilian, Feb 2, 2009
    #13
  14. Maximilian <> writes:
    > On Mon, 02 Feb 2009 10:39:24 +0100, jacob navia <> wrote:
    >>Maximilian wrote:
    >>
    >>Hello Maximilian
    >>
    >>Maybe you can help me out?
    >>
    >>When I run this program under "Microsoft Visual C" 64 bits I get a
    >>dialog box
    >>
    >>"Test.exe has stopped working"
    >>
    >>Below it is written
    >>
    >>"Windows is searching for a solution to this problem"

    >
    > (Did it find one?)
    >
    >
    >>Why is this so?

    >
    > I don't know. Can MS asctime() return NULL, as well? I think "%s"
    > format specifier need not accept NULL pointer, but is common extension.


    I think I already pointed you to
    <http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf>. Read the
    section on asctime().

    There are no circumstances in which asctime() is specifically
    permitted to return a null pointer. There are circumstances in which
    its behavior is undefined; in those cases, returning a null pointer is
    one possibility, but crashing your program is another.

    Also, the standard says nothing about asctime setting errno. In my
    opinion, it's not permitted to do so except in circumstances that
    invoke undefined behavior.

    > I'm more worried that asctime() returns NULL at all. I always looked
    > at it as simple formatter for struct tm, and as long as weekday and month
    > are in range, and as long as result string is not too long, I assumed it
    > would not try to look at values and simply use them as is.
    >
    > Oddly, it seems February 31 is accepted but January 32 is not.


    In my opinion, the implementation you describe does not conform to the
    standard. We can tell you what the standard specifies; if an
    implementation fails to conform, you'll need to take it up with the
    vendor. The vendor might not agree with my interpretation of the
    standard.

    Or, better yet, just don't use asctime(). I don't believe it's really
    suitable for your purposes, and I think you're wasting time. You can
    write your own solution (based on the algorithm given in the standard
    if you like) far more easily than you can resolve these questions.

    > What about metric time?


    What the heck is "metric time"?

    [...]
    >> struct tm tm = { 0 };
    >> char *s;
    >> int e;
    >>
    >> errno = 0;
    >> s = asctime(&tm);
    >> e = errno;
    >> printf("s: %s\n", s);

    >
    > Perhaps
    >
    > printf("s: %s", s ? s : "NULL\n");
    >
    > is is better protection. My excuse is, I have never seen asctime()
    > return NULL pointer before.


    That will protect you against asctime() returning a null pointer. It
    will not protect you against anything else.

    [...]

    --
    Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
    Nokia
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
     
    Keith Thompson, Feb 3, 2009
    #14
  15. Maximilian

    jacob navia Guest

    Maximilian wrote:
    > is is better protection. My excuse is, I have never seen asctime()
    > return NULL pointer before.


    POSIX specifies NULL return for errors

    --
    jacob navia
    jacob at jacob point remcomp point fr
    logiciels/informatique
    http://www.cs.virginia.edu/~lcc-win32
     
    jacob navia, Feb 3, 2009
    #15
  16. Maximilian

    Ian Collins Guest

    jacob navia wrote:
    > Maximilian wrote:
    >> is is better protection. My excuse is, I have never seen asctime()
    >> return NULL pointer before.

    >
    > POSIX specifies NULL return for errors


    It says if the function is unsuccessful, it shall return NULL. But is
    still specifies the standard algorithm and it does not define
    "unsuccessful". It does not list any errors.

    I didn't realise POSIX applied to windows.

    --
    Ian Collins
     
    Ian Collins, Feb 3, 2009
    #16
  17. Maximilian

    Bill M Guest

    Re: so why are atheists so pigheaded?

    "Keith" <> wrote in message
    news:...
    > OK, sorry for the provocative subject :) Honestly, why
    > can't you let the Christians be? I don't believe in a god
    > either, but what's with the endless rants? What do you
    > hope to achieve?


    More sanity and less forced religion in society!
     
    Bill M, Feb 3, 2009
    #17
  18. Maximilian

    Guest

    Keith Thompson <> wrote:
    >
    > Also, the standard says nothing about asctime setting errno. In my
    > opinion, it's not permitted to do so except in circumstances that
    > invoke undefined behavior.


    Nope -- 7.5p3:

    The value of errno may be set to nonzero by a library function
    call whether or not there is an error, provided the use of errno
    is not documented in the description of the function in this
    International Stand ard.
    --
    Larry Jones

    Hello, local Navy recruitment office? Yes, this is an emergency... -- Calvin
     
    , Feb 3, 2009
    #18
  19. writes:
    > Keith Thompson <> wrote:
    >>
    >> Also, the standard says nothing about asctime setting errno. In my
    >> opinion, it's not permitted to do so except in circumstances that
    >> invoke undefined behavior.

    >
    > Nope -- 7.5p3:
    >
    > The value of errno may be set to nonzero by a library function
    > call whether or not there is an error, provided the use of errno
    > is not documented in the description of the function in this
    > International Stand ard.


    Ah, good point.

    However, an asctime() implementation that sets errno in circumstances
    that don't invoke undefined behavior would not be equivalent to the
    algorithm presented in the standard. So one could argue this point
    either way, but I'm not going to bother.

    --
    Keith Thompson (The_Other_Keith) <http://www.ghoti.net/~kst>
    Nokia
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
     
    Keith Thompson, Feb 3, 2009
    #19
  20. Maximilian

    Aaron Guest

    Re: Who's your favorite American Idol ever?

    On Feb 3, 2:52 pm, Keith <> wrote:
    > Poll begins! :)


    Carrie.

    -Aaron
     
    Aaron, Feb 3, 2009
    #20
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. JS
    Replies:
    31
    Views:
    912
    CBFalconer
    Dec 20, 2004
  2. JS
    Replies:
    30
    Views:
    1,040
    CBFalconer
    Dec 20, 2004
  3. Michael Tan
    Replies:
    32
    Views:
    1,021
    Ara.T.Howard
    Jul 21, 2005
  4. Joey Zhou
    Replies:
    5
    Views:
    240
    Joey Zhou
    Apr 15, 2011
  5. Replies:
    7
    Views:
    444
Loading...

Share This Page