PRB: Out of Stack Space Error Caused by Property Procedure (129940)
The information in this article applies to:
- Microsoft Visual Basic Standard Edition, 32-bit, for Windows 4.0
- Microsoft Visual Basic Professional Edition, 16-bit, for Windows 4.0
- Microsoft Visual Basic Professional Edition, 32-bit, for Windows 4.0
- Microsoft Visual Basic Enterprise Edition, 16-bit, for Windows 4.0
- Microsoft Visual Basic Enterprise Edition, 32-bit, for Windows 4.0
This article was previously published under Q129940 SYMPTOMS
Using a non-reserved Visual Basic keyword within a Property Procedure of
the same name creates a recursive call to that Property statement resulting
in this error:
Out of Stack Space Error.
CAUSE
Visual Basic allows you to define Properties and Methods that have the same
name as non-reserved keywords because many keywords (such as Left) in
previous versions of Visual Basic are used frequently by OLE servers. If
you take advantage of this in your own Class, an "Out of Stack Space error"
can occur in a Property Get Procedure when both of the following conditions
are met: - A call to the non-reserved keyword with the same name as the Property
is located within a Property Get Procedure.
- The Property Get Procedure returns a Variant or Object.
RESOLUTION
Typically, if one of the following conditions is true, Visual Basic can
determine whether to call the Property Get procedure or the non-reserved
keyword: - The Property Get procedure doesn't return a Variant or Object.
-or-
- The call to the non-reserved keyword takes a different number of
parameters then the Property Get procedure takes.
For example, given the following Property Get Property procedure, the
Visual Basic Left function would be called instead of the Property Get
procedure:
Property Get Left() as String
Left = Left("Hello World",10) ' Visual Basic Left function called
End Property
Because the Property Get Procedure expects 0 parameters and the Visual
Basic function expects 2, the Visual Basic Left function is called.
If, however, the Property Get Procedure returns either a Variant or an
Object, the Property Get Procedure is called, regardless of the number of
Parameters the Property Procedure expects. This occurs because Objects,
which are now supported in Variants, can have a default property, which can
take parameters themselves. When you call a function that returns a Variant
or Object, and you pass the incorrect number of parameters, Visual Basic
realizes that you intended to pass the parameters to the default property
of the Object, so it generates a call to the default property with those
parameters. In this case, the "Incorrect Number of Parameters" message is
not generated because it is not necessarily known how many parameters are
expected by the default property.
STATUS
This behavior is by design.
Modification Type: | Major | Last Reviewed: | 12/9/2003 |
---|
Keywords: | kbprb KB129940 |
---|
|