Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
No Safe Word
Feb 26, 2005

Bunny Cuddlin posted:

that was posted yesterday

and? I wasn't implying it was old, just that it's getting enough run to have had responses and responses to those responses and then responses to those...

Adbot
ADBOT LOVES YOU

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

ymgve posted:

Unless you are on some especially braindead operating system, the OS should take care of any unclosed file handles and other resources the program used.

(Note that "take care of" is said here in the Mafia sense. Whatever file that handle pointed to is possibly toast.)

Depends on if buffered IO was flushed first:
code:
> irb
irb> Process.pid
=> 83251
irb> f = File.open '/tmp/butts.txt', 'w'
=> #<File:/tmp/butts.txt>
irb> f.puts "asdfasf"
=> nil
irb> `kill -9 83251`
zsh: killed     irb --readline -r irb/completion
> cat /tmp/butts.txt 
> irb
irb> f = File.open '/tmp/butts.txt', 'w'
=> #<File:/tmp/butts.txt>
irb> f.puts "asdfasdfassdf"
=> nil
irb> f.flush
=> #<File:/tmp/butts.txt>
irb> `kill -9 #{Process.pid}`
zsh: killed     irb --readline -r irb/completion
> cat /tmp/butts.txt
asdfasdfassdf
>

ultramiraculous
Nov 12, 2003

"No..."
Grimey Drawer

This is, far-and-away, the most smug, bay-area sounding thing I've ever read.

Zombywuf
Mar 29, 2008

Hard NOP Life posted:

2. It can't open any more files and shits itself?

Close but no cigar. Async mode can be writing multiple files at once. It shits on everything it is writing at the time. The code explicitly bombs on error. For some reason. Like, it singles that error out.

Thermopyle posted:

Why is ridiculing with no context an effective way of making this happen? (Assuming the intention is to limit the amount of such code out there rather than just inflating your own ego)

Pretty sure it made her feel bad.

Thermopyle
Jul 1, 2003

...the stupid are cocksure while the intelligent are full of doubt. —Bertrand Russell

Zombywuf posted:

Pretty sure it made her feel bad.

And we come full circle. Why is this good? What is the intention?

JawnV6
Jul 4, 2004

So hot ...

1337JiveTurkey posted:

She can at least delete that herself.

But it's infused with... pride? It just seems like there's hordes of employers who wouldn't bat an eye at winding up a javascript engine just to bat some text around, while documentation of shattering at anonymous, unfounded internet criticisms might be more problematic.

Zombywuf
Mar 29, 2008

Thermopyle posted:

And we come full circle. Why is this good? What is the intention?

I don't think you meant to use the word effective.

As for why, well anything that lessens the chance I will ever see this code in prod is good by me. Maybe eventually I'll quit smoking and drinking so much. Maybe if some of the Gnome or MySQL devs posted whines about all the people being mean about their code they'd write less of it and I could sleep better at night.

shrughes
Oct 11, 2008

(call/cc call/cc)
Her post was pure ownage. Lots of people wouldn't have noticed what shitlords steveklabnik and coreyhaines are if it weren't for that post.

raminasi
Jan 25, 2005

a last drink with no ice

Zombywuf posted:

I don't think you meant to use the word effective.

As for why, well anything that lessens the chance I will ever see this code in prod is good by me. Maybe eventually I'll quit smoking and drinking so much. Maybe if some of the Gnome or MySQL devs posted whines about all the people being mean about their code they'd write less of it and I could sleep better at night.

You must be a wonderful coworker.

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

GrumpyDoctor posted:

You must be a wonderful coworker.

Ask tef

npe
Oct 15, 2004
People who write terrible code shouldn't be ridiculed, they should just be fired, that's much nicer

Doctor w-rw-rw-
Jun 24, 2008

npe posted:

People who write terrible code shouldn't be ridiculed, they should just be fired, that's much nicer

People who write bad code should be handled by adults, not tried and convicted by immature manchildren. God drat.

Volte
Oct 4, 2004

woosh woosh
Everyone should be deeply ashamed of their code and make every attempt to conceal it. If you expose it to the open air, people will laugh and ridicule you, and deservedly so. Only a small amount of code that has ever been written is worth looking at, and the rest is highly corrosive and radioactive and should be kept in a lead container inside a concrete sarcophagus rather than on github where people might accidentally look at it.

fritz
Jul 26, 2003

Ithaqua posted:

In my experience, the Ruby world has a very high concentration of pretentious pricks.

[edit] My experience comes from attending conferences and going to talks on Ruby, since it's on my backlog of "languages to actually learn well"

First time I really heard of ruby was when that Matt Aimiotti dude did the "Runs like a Porn Star" presentation a few years ago.

Maluco Marinero
Jan 18, 2001

Damn that's a
fine elephant.

ultramiraculous posted:

This is, far-and-away, the most smug, bay-area sounding thing I've ever read.

Telling me. God drat if it isn't the most self serving pile of words I've ever seen as a defence of ... something.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

Volte posted:

Everyone should be deeply ashamed of their code and make every attempt to conceal it. If you expose it to the open air, people will laugh and ridicule you, and deservedly so. Only a small amount of code that has ever been written is worth looking at, and the rest is highly corrosive and radioactive and should be kept in a lead container inside a concrete sarcophagus rather than on github where people might accidentally look at it.
Hahaha I think this is about right. That social coding stuff is like some act of vanity to be head of the dog pack. poo poo on the ground and act all proud of it, and just go on the offensive if somebody says your poo poo or your rear end stinks. But generally one's code starts to gather flies the moment it has left their short-term memory. But we'll say I'm trying to recover from the attitude of just mocking everything, because it just falls into that whole "rewrite everything" kind of vibe you see, and we saw it in the thread just recently. But I know I couldn't expect that from others, so to some extent I'm still a little afraid to post code.



That being said, I'd like to share a horror anyways! I was trying to get a USB relay to be software-controlled. It came with a Windows GUI application that kind of, sort of worked, but it had quirks. It would sometimes just post "Unspecified Error" in a dialog box when trying to use it. It forced you to wait 5 seconds before doing a power cycle with the relay by showing a dialog box "Wait X seconds" if you tried to switch too soon. Like, if you turned it off and 2 seconds later, you wanted to turn it back on, you'd get "Wait 3 seconds." They could have, you know, just put that wait time into the GUI. It would also sometimes just fail to detect the stupid relay. You could sometimes fix this by fidgeting and fumbling around with it on a different USB port. So we figured we could do that software better, and we kind of had to if we wanted to control it hands-free.

I looked at their SDK, which was basically the source code for that project. The project was a Visual C++ 2008 project, and it came with the bin\Release path already existing, so if you tried to build it, it would tell you it was already up-to-date unless you cleaned it up first. Yeah, that is in the installer's archive. It had a ReadMe.txt, which I've learned by now whenever you see that in this poo poo, it's just the "The Windows App Wizard slid all these files out of its rear end and this is what you should put in them." That's just the stub you get when creating a default project. Of course it had no useful information. I've learned that when I see these, the code is probably terrible. So the real horrors began.

The relay comes up in device manager as a USB->serial adapter, COM port and all. I was expecting to see the application doing serial I/O. But no, it would open the USB device as a raw USB device, using the vendor and product IDs, and transact with it using ioctl wrappers! Okay, fine, maybe that was a way to allow two programs to access the port at once, since COM ports block. But if you opened up two instances of this program, well, God help you.

Second, most of the commands were single-byte, hex sequences. Here is how they put a control code in one of their buffers:

code:
butt = "9a";
int as_code = strtol(butt, NULL, 16);
buffer[0] = as_code;
Instead of, you know:
code:
buffer[0] = 0x9a;
The test program included a time and calendar thing so you could schedule a time for the relay to toggle. Halfway through the code, I saw it was doing something like hosting its own little Microsoft Access database and submitting SQL to it to schedule and check these times. I just about shat my pants when I started to see "SELECT *...." right in all that.

There was some shorter sample code I had found to talk to the device, and that was rather straight-forward. The problem was that if any other USB ports on the host PC changed, whether adding or removing a device, the relay would just turn off. Plug in a new keyboard, turn off. Unplug a thumb drive, turn off. The test application didn't do that, and I wanted to know why, but I knew it wasn't actually using the USB-serial driver as serial device, so I couldn't snoop it that way. It was time for the software USB protocol analyzer! I bring that thing up and start capturing. It was very odd to see such a large volume of traffic, and then I realized what it was doing.

In the GUI example, if you told the relay to turn on, this program would just constantly poll that port and tell it, "Turn on turn on turn on turn on turn on turn on turn on turn on turn on turn on turn on." Similarly, if you told the relay to open and turn off the power, it would poll the port with "Turn off turn off turn off turn off turn off turn off turn off turn off turn off turn off." So it wasn't that it actually did it any better, it just wasn't obvious. It was also pretty clear to me they knew about the problem and decided this was the solution. So if you were running it and, say, plugged in a thumb drive to the same host PC, it would be like "Turn on turn on turn on turn on turn on turn on turn on [Remove thumb drive and it shuts off for a split second] turn on turn on turn on turn on turn on." So if you had a computer on that thing, you'd realize it had rebooted, but when you looked at the relay, it would appear that it was on and everything was okay.

Seriously, what the flying gently caress?

Rocko Bonaparte fucked around with this message at 08:51 on Jan 26, 2013

Drape Culture
Feb 9, 2010

But it was all right, everything was all right, the struggle was finished. He had won the victory over himself. He loved Big Brother.

The End.
Found this little gem while refactoring some code. It's not really a standalone method, actually part of a much longer method that is equally convoluted.

Java code:
List<Long> filterFooList(List<Long> longsToSelectFrom) {
	List<Long> fooList = getFooList();

	if (null == longsToSelectFrom) {
		log.printWarning("No Foos_provided_to_this_method!!!");
		return null;
	}
	else {
		if (longsToSelectFrom.size() < 1) {
			return null;
		}
		log.printDebug("Foos_provided_to_this_method: " + longsToSelectFrom.size());
				int j=1;
				for (Long foo: longsToSelectFrom) {
					log.printDebug("Foo_value_provided_to_this_method#" + j+ ":" + foo);
					++j;
				}
	}

	fooList.retainAll(longsToSelectFrom);

	return fooList;
}
While the names have been changed, the whitespace is still the same.

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
This is exactly why the use of null in place of a collection should be loving banned. There's really no reason that you can't just return an empty collection instead, which would really clean up a lot of the code that deals with that poo poo.

If you want to force the caller to deal with something, throw an exception. If you want the caller to be able to write clean and obvious code yet still work correctly, return an empty collection. If you want the worst of both worlds, be an idiot and return null.

Jonnty
Aug 2, 2007

The enemy has become a flaming star!

Zombywuf posted:

I don't think you meant to use the word effective.

As for why, well anything that lessens the chance I will ever see this code in prod is good by me. Maybe eventually I'll quit smoking and drinking so much. Maybe if some of the Gnome or MySQL devs posted whines about all the people being mean about their code they'd write less of it and I could sleep better at night.
                                            /

npe
Oct 15, 2004

Doctor w-rw-rw- posted:

People who write bad code should be handled by adults, not tried and convicted by immature manchildren. God drat.

I'm being super lame by posting this but I was being facetious. I've worked with and rehabilitated people responsible for far worse things.

But more posting bad code, less talking about bad coders.

hobbesmaster
Jan 28, 2008

Rocko Bonaparte posted:

Seriously, what the flying gently caress?

Don't deal with hardware too much? This is pretty par for the course - EEs as a group are horrible programmers that think themselves smarter than "lowly CS majors". They then proceed to do everything at the lowest level possible and in the worst possible way.

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

hobbesmaster posted:

Don't deal with hardware too much? This is pretty par for the course - EEs as a group are horrible programmers that think themselves smarter than "lowly CS majors". They then proceed to do everything at the lowest level possible and in the worst possible way.

EEs code is generally either sad or depressing, but in my experience this isn't why. There are a lot of people out there who graduated in the late 80s or early 90s who drank a full pitcher of the contemporary OO kool-aid who wind up trying to implement something like GObject on an AVR or PIC.


Imagine Martin Fowler stamping on a human face, forever.

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip
(and of course there are the far more common EEs who aren't working at too high or low a level of abstraction, but rather are just not experienced with coding and thus write really repetitive code with obvious mistakes, but who think this must be a reasonable way to write programs because hey we got it to mostly work the last three times! This is a common pattern in production support people who get roped into writing some automation or calibration software as well, although they have the added bonus of Visual Basic inspired horrors)

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

hobbesmaster posted:

Don't deal with hardware too much? This is pretty par for the course - EEs as a group are horrible programmers that think themselves smarter than "lowly CS majors". They then proceed to do everything at the lowest level possible and in the worst possible way.
Generally this is the kind of thing I do in my day job, but I have to say that one circumstance was by far the singular worst one I had ever seen. However they interfaced with USB was so bad that even the hardware side of their product was rendered useless.

A lot of my experience with contemporary electrical engineers is that they took a course on something usually involving C and maybe scientific applications. They never learned data structures, or any structure at all for that matter. So they think that is all that programming is, and they think that all programming languages are C. How this manifests can vary. Some of them do look down upon "software people" as if those people just took that same programming course over and over in college or something. Others are not full of themselves, but aren't interested in improving either, so you get "works on my machine" galore. Then there are some others that are generally interested in improving and work towards it.

tef
May 30, 2004

-> some l-system crap ->

Bad code is a trigger for zombywuf. you guys need to be more patient with people who are obviously traumatised.

tef
May 30, 2004

-> some l-system crap ->
There is a difference between making fun of anonymous code snippets in a small forum, and linking to someone's github and saying "this is exactly what is wrong with javascript". At least when Torvalds is an rear end in a top hat, it is normally in reply to something directed at him. On the other hand, waking up to find a couple of thousand people arguing about the merits of a small script you wrote, often on trivialities, is a bit of a shock.

tef
May 30, 2004

-> some l-system crap ->

Ithaqua posted:

In my experience, the Ruby world has a very high concentration of pretentious pricks.

I don't know if this is true but ruby seems to have much more of a celebrity coder environment. I haven't found a correlation between dickheadedness and choice of language myself, but I don't know of any other language community that seems to run on so much drama fuel.

http://www.rubydramas.com

tef fucked around with this message at 19:22 on Jan 26, 2013

tef
May 30, 2004

-> some l-system crap ->

quote:

As for why, well anything that lessens the chance I will ever see this code in prod is good by me.

I don't think making fun of random github code in a driveby fashion is a reasonable use of celebrity fuelled attention. It's a kinda vapid circlejerk. It doesn't seem to have any correlation between their code and your production environment.


quote:

Maybe eventually I'll quit smoking and drinking so much. Maybe if some of the Gnome or MySQL devs posted whines about all the people being mean about their code they'd write less of it and I could sleep better at night.

If the thought of other people writing code keeps you awake at night, smoking and drinking aren't going to help.

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip
I blame the huge influx of young developers to Ruby from the "create a blog in 15 minutes with rails" screencast from 2007 (i think).

tef
May 30, 2004

-> some l-system crap ->

Otto Skorzeny posted:

I blame the huge influx of young developers to Ruby from the "create a blog in 15 minutes with rails" screencast from 2007 (i think).

That and it inherited a whole bunch of zealots from perl too.

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe

Otto Skorzeny posted:

I blame the huge influx of young developers to Ruby from the "create a blog in 15 minutes with rails" screencast from 2007 (i think).

scaffolding!

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
My favorite thing was the followup with plone

http://oodt.jpl.nasa.gov/better-web-app.mov

Where it discussed making a random CMS with various frameworks and then they figure out that hey, when you use this already-built CMS, it's super fast!

edit: youtube https://www.youtube.com/watch?v=DWODIO6aCUE

Suspicious Dish fucked around with this message at 19:47 on Jan 26, 2013

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

tef posted:

That and it inherited a whole bunch of zealots from perl too.

I don't know how many perl zealots went to ruby as opposed to normal perl users, but Perl certainly had similar problems in the mid to late 90s, and is dealing with their fallout still. These started with Matt Wright problems and evolved into Matt Trout problems.

tef
May 30, 2004

-> some l-system crap ->
"We're all fuckheads sometimes. Cut the other fuckhead a little slack, willya?"

Amen.

Zombywuf
Mar 29, 2008


Yeah, this is why I shouldn't drink so much. But you know you could have linked to the terrible code I've put on github or something. But hey, if people's appearance is the best you can do well that's just precious.

tef
May 30, 2004

-> some l-system crap ->
http://nsaunders.wordpress.com/2012/10/22/gene-name-errors-and-excel-lessons-not-learned/

Gene names such as MAR1, DEC1, OCT4 and SEPT9 are now reformatted as dates.


:q:

Zombywuf
Mar 29, 2008

tef posted:

http://nsaunders.wordpress.com/2012/10/22/gene-name-errors-and-excel-lessons-not-learned/

Gene names such as MAR1, DEC1, OCT4 and SEPT9 are now reformatted as dates.

Damnit Joel.

Toady
Jan 12, 2009

Bunny Cuddlin posted:

Seriously? I didn't even realize this person was a woman until I read this post. What does this have to do with gender?

The original mocking was stupid anti-Node tribalism. On the other hand, the social justice lectures resulting from it are ridiculous and amplified because the author is female. No software developer should put code on Github if they're going to weep uncontrollably when someone is mean on Twitter. Such a developer should get a grip, for God's sake.

Toady fucked around with this message at 01:30 on Jan 28, 2013

biznatchio
Mar 31, 2001


Buglord

Zombywuf posted:

Yeah, this is why I shouldn't drink so much. But you know you could have linked to the terrible code I've put on github or something. But hey, if people's appearance is the best you can do well that's just precious.

I dunno man, making fun of someone on a personal level because of their code seems just as justifiable to me as making fun of them because of their lack of care toward their physical appearance. Seriously man, groom yourself, you're an example of everything that's wrong with software developers.</s>

That is to say when you see bad code you should critique the code, not the person. Every single one of us has written bad code, whether out of sheer ignorance, out of resource constraints, or because a quick and dirty hack was all there was time for. That doesn't make us terrible people.

Adbot
ADBOT LOVES YOU

Pardot
Jul 25, 2001




look at this code

C code:
  IF_GET_LONG("numclasses",  php_layer->layer->numclasses)
  else IF_GET_LONG("index", php_layer->layer->index)
    else IF_GET_LONG("status", php_layer->layer->status)
      else IF_GET_LONG("debug",  php_layer->layer->debug)
        else IF_GET_STRING("bandsitem", php_layer->layer->bandsitem)
          else IF_GET_STRING("classitem", php_layer->layer->classitem)
            else IF_GET_STRING("classgroup", php_layer->layer->classgroup)
              else IF_GET_STRING("name", php_layer->layer->name)
                else IF_GET_STRING("group", php_layer->layer->group)
                  else IF_GET_STRING("data", php_layer->layer->data)
                    else IF_GET_LONG("type",  php_layer->layer->type)
                      else IF_GET_LONG("dump", php_layer->layer->dump)
                        else IF_GET_DOUBLE("tolerance", php_layer->layer->tolerance)
                          else IF_GET_LONG("toleranceunits", php_layer->layer->toleranceunits)
                            else IF_GET_LONG("sizeunits", php_layer->layer->sizeunits)
                              else IF_GET_DOUBLE("symbolscaledenom", php_layer->layer->symbolscaledenom)
                                else IF_GET_LONG("maxclasses",  php_layer->layer->maxclasses)
                                  else IF_GET_DOUBLE("minscaledenom", php_layer->layer->minscaledenom)
                                    else IF_GET_DOUBLE("maxscaledenom", php_layer->layer->maxscaledenom)
                                      else IF_GET_DOUBLE("labelminscaledenom", php_layer->layer->labelminscaledenom)
                                        else IF_GET_DOUBLE("labelmaxscaledenom", php_layer->layer->labelmaxscaledenom)
                                          else IF_GET_DOUBLE("maxgeowidth", php_layer->layer->maxgeowidth)
                                            else IF_GET_DOUBLE("mingeowidth", php_layer->layer->mingeowidth)
                                              else IF_GET_STRING("mask", php_layer->layer->mask)
                                                else IF_GET_LONG("minfeaturesize", php_layer->layer->minfeaturesize)
                                                  else IF_GET_LONG("maxfeatures", php_layer->layer->maxfeatures)
                                                    else IF_GET_LONG("startindex", php_layer->layer->startindex)
                                                      else IF_GET_LONG("annotate", php_layer->layer->annotate)
                                                        else IF_GET_LONG("transform", php_layer->layer->transform)
                                                          else IF_GET_LONG("labelcache", php_layer->layer->labelcache)
                                                            else IF_GET_LONG("postlabelcache", php_layer->layer->postlabelcache)
                                                              else IF_GET_STRING("labelitem", php_layer->layer->labelitem)
                                                                else IF_GET_STRING("tileitem", php_layer->layer->tileitem)
                                                                  else IF_GET_STRING("tileindex", php_layer->layer->tileindex)
                                                                    else IF_GET_STRING("header", php_layer->layer->header)
                                                                      else IF_GET_STRING("footer", php_layer->layer->footer)
                                                                        else IF_GET_STRING("connection", php_layer->layer->connection)
                                                                          else IF_GET_LONG("connectiontype", php_layer->layer->connectiontype)
                                                                            else IF_GET_STRING("filteritem", php_layer->layer->filteritem)
                                                                              else IF_GET_STRING("template", php_layer->layer->template)
                                                                                else IF_GET_LONG("opacity", php_layer->layer->opacity)
                                                                                  else IF_GET_STRING("styleitem", php_layer->layer->styleitem)
                                                                                    else IF_GET_LONG("numitems", php_layer->layer->numitems)
                                                                                      else IF_GET_LONG("numjoins", php_layer->layer->numjoins)
                                                                                        else IF_GET_LONG("num_processing", php_layer->layer->numprocessing)
                                                                                          else IF_GET_STRING("requires", php_layer->layer->requires)
                                                                                            else IF_GET_STRING("labelrequires", php_layer->layer->labelrequires)
                                                                                              else IF_GET_OBJECT("offsite", mapscript_ce_color, php_layer->offsite, &php_layer->layer->offsite)
                                                                                                else IF_GET_OBJECT("extent", mapscript_ce_rect, php_layer->extent, &php_layer->layer->extent)
                                                                                                  else IF_GET_OBJECT("grid",  mapscript_ce_grid, php_layer->grid, (graticuleObj *)(php_layer->layer->layerinfo))
                                                                                                    else IF_GET_OBJECT("metadata", mapscript_ce_hashtable, php_layer->metadata, &php_layer->layer->metadata)
                                                                                                      else IF_GET_OBJECT("bindvals", mapscript_ce_hashtable, php_layer->bindvals, &php_layer->layer->bindvals)
                                                                                                        else IF_GET_OBJECT("cluster", mapscript_ce_cluster, php_layer->cluster, &php_layer->layer->cluster)
                                                                                                          else IF_GET_OBJECT("projection", mapscript_ce_projection, php_layer->projection, &php_layer->layer->projection)
                                                                                                            else {
                                                                                                              mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property);
                                                                                                            }
}

Pardot fucked around with this message at 06:11 on Jan 29, 2013

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply